revert inexplicable previous checkin

This commit is contained in:
Christopher Faylor 2005-09-02 04:51:09 +00:00
parent 7a1bf10a84
commit b8a66ba2cd
9 changed files with 20 additions and 34 deletions

View File

@ -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));
} }

View File

@ -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,

View File

@ -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. */

View File

@ -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,7 +418,6 @@ 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,7 +469,6 @@ 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);

View File

@ -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);

View File

@ -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

View File

@ -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;
} }

View File

@ -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:

View File

@ -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