revert inexplicable previous checkin
This commit is contained in:
parent
7a1bf10a84
commit
b8a66ba2cd
|
@ -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,7 +418,6 @@ 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);
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -469,7 +469,6 @@ 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);
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue