revert inexplicable previous checkin
This commit is contained in:
		| @@ -158,7 +158,12 @@ cygheap_init () | ||||
|   cygheap_protect.init ("cygheap_protect"); | ||||
|   if (!cygheap) | ||||
|     { | ||||
| #if 1 | ||||
|       cygheap = (init_cygheap *) memset (_cygheap_start, 0, _cygheap_mid - _cygheap_start); | ||||
| #else | ||||
|       cygheap = (init_cygheap *) _cygheap_start; | ||||
| #endif | ||||
|  | ||||
|       cygheap_max = cygheap; | ||||
|       _csbrk (sizeof (*cygheap)); | ||||
|     } | ||||
|   | ||||
| @@ -547,7 +547,7 @@ initial_env () | ||||
|       len = GetModuleFileName (NULL, buf, CYG_MAX_PATH); | ||||
|       console_printf ("Sleeping %d, pid %u %s\n", ms, GetCurrentProcessId (), buf); | ||||
|       Sleep (ms); | ||||
|       if (!strace.active && !dynamically_loaded) | ||||
|       if (!strace.active) | ||||
| 	{ | ||||
| 	  strace.inited = 0; | ||||
| 	  strace.hello (); | ||||
| @@ -634,6 +634,7 @@ dll_crt0_0 () | ||||
|   wincap.init (); | ||||
|   initial_env (); | ||||
|  | ||||
|   init_console_handler (TRUE); | ||||
|   init_global_security (); | ||||
|   if (!DuplicateHandle (GetCurrentProcess (), GetCurrentProcess (), | ||||
| 		       GetCurrentProcess (), &hMainProc, 0, FALSE, | ||||
|   | ||||
| @@ -123,8 +123,7 @@ void | ||||
| init_console_handler (BOOL install_handler) | ||||
| { | ||||
|   BOOL res; | ||||
|   while (SetConsoleCtrlHandler (ctrl_c_handler, FALSE)) | ||||
|     continue; | ||||
|   SetConsoleCtrlHandler (ctrl_c_handler, FALSE); | ||||
|   if (install_handler) | ||||
|     res = SetConsoleCtrlHandler (ctrl_c_handler, TRUE); | ||||
|   else if (wincap.has_null_console_handler_routine ()) | ||||
| @@ -834,7 +833,6 @@ has_visible_window_station () | ||||
| static BOOL WINAPI | ||||
| ctrl_c_handler (DWORD type) | ||||
| { | ||||
| console_printf ("%u OUCH!\n", GetCurrentProcessId ()); | ||||
|   static bool saw_close; | ||||
|  | ||||
|   if (!cygwin_finished_initializing) | ||||
| @@ -847,11 +845,6 @@ console_printf ("%u OUCH!\n", GetCurrentProcessId ()); | ||||
|  | ||||
|   _my_tls.remove (INFINITE); | ||||
|  | ||||
| #if 0 | ||||
|   if (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT) | ||||
|     proc_subproc (PROC_KILLFORKED, 0); | ||||
| #endif | ||||
|  | ||||
|   /* Return FALSE to prevent an "End task" dialog box from appearing | ||||
|      for each Cygwin process window that's open when the computer | ||||
|      is shut down or console window is closed. */ | ||||
|   | ||||
| @@ -283,7 +283,8 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ | ||||
|  | ||||
|   pthread::atforkprepare (); | ||||
|  | ||||
|   int c_flags = GetPriorityClass (hMainProc); | ||||
|   int c_flags = GetPriorityClass (hMainProc) /*| | ||||
| 		CREATE_NEW_PROCESS_GROUP*/; | ||||
|   STARTUPINFO si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL}; | ||||
|  | ||||
|   /* If we don't have a console, then don't create a console for the | ||||
| @@ -335,7 +336,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ | ||||
|   /* Remove impersonation */ | ||||
|   cygheap->user.deimpersonate (); | ||||
|  | ||||
|   syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %p, 0, 0, %p, %p)", | ||||
|   syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %x, 0, 0, %p, %p)", | ||||
| 		  myself->progname, myself->progname, c_flags, &si, &pi); | ||||
|   bool locked = __malloc_lock (); | ||||
|   rc = CreateProcess (myself->progname, /* image to run */ | ||||
| @@ -417,8 +418,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ | ||||
|   /* Wait for subproc to initialize itself. */ | ||||
|   if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT)) | ||||
|     { | ||||
|       if (NOTSTATE (child, PID_EXITED)) | ||||
| 	system_printf ("child %d died waiting for longjmp before initialization", child_pid); | ||||
|       system_printf ("child %d died waiting for longjmp before initialization", child_pid); | ||||
|       goto cleanup; | ||||
|     } | ||||
|  | ||||
| @@ -469,8 +469,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ | ||||
|     goto cleanup; | ||||
|   else if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT)) | ||||
|     { | ||||
|       if (NOTSTATE (child, PID_EXITED)) | ||||
| 	system_printf ("child %d died waiting for dll loading", child_pid); | ||||
|       system_printf ("child %d died waiting for dll loading", child_pid); | ||||
|       goto cleanup; | ||||
|     } | ||||
|  | ||||
| @@ -507,7 +506,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ | ||||
|     __malloc_unlock (); | ||||
|  | ||||
|   /* Remember to de-allocate the fd table. */ | ||||
|   if (pi.hProcess && !child.hProcess) | ||||
|   if (pi.hProcess) | ||||
|     ForceCloseHandle1 (pi.hProcess, childhProc); | ||||
|   if (pi.hThread) | ||||
|     ForceCloseHandle (pi.hThread); | ||||
|   | ||||
| @@ -34,11 +34,9 @@ extern "C" size_t getpagesize (); | ||||
| void | ||||
| heap_init () | ||||
| { | ||||
| static int seen = 0; | ||||
|   /* If we're the forkee, we must allocate the heap at exactly the same place | ||||
|      as our parent.  If not, we don't care where it ends up.  */ | ||||
|  | ||||
| seen++; | ||||
|   page_const = system_info.dwPageSize; | ||||
|   if (!cygheap->user_heap.base) | ||||
|     { | ||||
| @@ -75,11 +73,11 @@ seen++; | ||||
| 				     MEM_RESERVE, PAGE_READWRITE); | ||||
| 	  if (p) | ||||
| 	    break; | ||||
| 	  if ((reserve_size -= page_const) < allocsize) | ||||
| 	  if ((reserve_size -= page_const) <= allocsize) | ||||
| 	    break; | ||||
| 	} | ||||
|       if (!p) | ||||
| 	api_fatal ("couldn't allocate heap, %E, base %p, top %p, " | ||||
| 	api_fatal ("couldn't allocate cygwin heap, %E, base %p, top %p, " | ||||
| 		   "reserve_size %d, allocsize %d, page_const %d", | ||||
| 		   cygheap->user_heap.base, cygheap->user_heap.top, | ||||
| 		   reserve_size, allocsize, page_const); | ||||
|   | ||||
| @@ -147,7 +147,6 @@ dll_entry (HANDLE h, DWORD reason, void *static_load) | ||||
|     case DLL_PROCESS_ATTACH: | ||||
|       cygwin_hmodule = (HMODULE) h; | ||||
|       dynamically_loaded = (static_load == NULL); | ||||
|       init_console_handler (TRUE); | ||||
|  | ||||
|       /* Is the stack at an unusual address?  This is, an address which | ||||
|          is in the usual space occupied by the process image, but below | ||||
|   | ||||
| @@ -1196,7 +1196,8 @@ winpids::add (DWORD& nelem, bool winpid, DWORD pid) | ||||
|       pinfolist = (pinfo *) realloc (pinfolist, size_pinfolist (npidlist + 1)); | ||||
|     } | ||||
|  | ||||
|   pinfolist[nelem].init (cygpid, PID_NOREDIR | pinfo_access, NULL); | ||||
|   pinfolist[nelem].init (cygpid, PID_NOREDIR | (winpid ? PID_ALLPIDS : 0) | ||||
| 			 | pinfo_access, NULL); | ||||
|   if (winpid) | ||||
|     goto out; | ||||
|  | ||||
| @@ -1204,7 +1205,7 @@ winpids::add (DWORD& nelem, bool winpid, DWORD pid) | ||||
|     { | ||||
|       if (!pinfo_access) | ||||
| 	return; | ||||
|       pinfolist[nelem].init (cygpid, PID_NOREDIR, NULL); | ||||
|       pinfolist[nelem].init (cygpid, PID_NOREDIR | (winpid ? PID_ALLPIDS : 0), NULL); | ||||
|       if (!pinfolist[nelem]) | ||||
| 	return; | ||||
|       } | ||||
|   | ||||
| @@ -346,15 +346,6 @@ proc_subproc (DWORD what, DWORD val) | ||||
|       if (global_sigs[SIGCHLD].sa_handler == (void *) SIG_IGN) | ||||
| 	for (int i = 0; i < nprocs; i += remove_proc (i)) | ||||
| 	  continue; | ||||
|       break; | ||||
|     case PROC_KILLFORKED: | ||||
|       for (int i = 0; i < nprocs; i++) | ||||
| 	if (ISSTATE (procs[i], PID_INITIALIZING)) | ||||
| 	  { | ||||
| 	    TerminateProcess (procs[i].hProcess, 1); | ||||
| 	    procs[i]->process_state = PID_EXITED; | ||||
| 	  } | ||||
|       break; | ||||
|   } | ||||
|  | ||||
| out: | ||||
|   | ||||
| @@ -34,8 +34,7 @@ enum procstuff | ||||
|   PROC_DETACHED_CHILD	  = 2,	// set up a detached child | ||||
|   PROC_CLEARWAIT	  = 3,	// clear all waits - signal arrived | ||||
|   PROC_WAIT		  = 4,	// setup for wait() for subproc | ||||
|   PROC_KILLFORKED	  = 5,  // kill forked children on CTRL-C. | ||||
|   PROC_NOTHING		  = 6	// nothing, really | ||||
|   PROC_NOTHING		  = 5	// nothing, really | ||||
| }; | ||||
|  | ||||
| struct sigpacket | ||||
|   | ||||
		Reference in New Issue
	
	Block a user