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