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