* fork.cc (fork_child): Invert sense of test which defeated correct handling in

a fork from a non-main thread.
* dcrt0.cc (initial_env): Eliminate parameter and just send DebugBreak when
appropriate.
(dll_crt0_0): Reflect parameter change to initial_env.
(dll_crt0_1): Don't call initial_env.
This commit is contained in:
Christopher Faylor 2004-02-18 22:32:15 +00:00
parent 2d6c4a1a65
commit 0e061ecf96
3 changed files with 17 additions and 16 deletions

View File

@ -1,3 +1,13 @@
2004-02-18 Christopher Faylor <cgf@redhat.com>
* fork.cc (fork_child): Invert sense of test which defeated correct
handling in a fork from a non-main thread.
* dcrt0.cc (initial_env): Eliminate parameter and just send DebugBreak
when appropriate.
(dll_crt0_0): Reflect parameter change to initial_env.
(dll_crt0_1): Don't call initial_env.
2004-02-18 Christopher Faylor <cgf@redhat.com>
* gendef (stabilize_sig_stack): New function.

View File

@ -536,25 +536,15 @@ break_here ()
#endif
static void
initial_env (bool first)
initial_env ()
{
char buf[CYG_MAX_PATH + 1];
if (!first)
/* nothing */;
else if (GetEnvironmentVariable ("CYGWIN_TESTING", buf, sizeof (buf) - 1))
if (GetEnvironmentVariable ("CYGWIN_TESTING", buf, sizeof (buf) - 1))
_cygwin_testing = 1;
#ifdef DEBUGGING
DWORD len;
static bool NO_COPY did_debugging_stuff;
#if 0
if (did_debugging_stuff || (first && wincap.cant_debug_dll_entry ()))
return;
#else
if (first)
return;
#endif
did_debugging_stuff = true;
if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf) - 1))
{
DWORD ms = atoi (buf);
@ -583,6 +573,8 @@ initial_env (bool first)
{
error_start_init (p);
try_to_debug ();
console_printf ("*** Sending Break. gdb may issue spurious SIGTRAP message.\n");
DebugBreak ();
break_here ();
}
}
@ -594,7 +586,7 @@ void __stdcall
dll_crt0_0 ()
{
wincap.init ();
initial_env (true);
initial_env ();
char zeros[sizeof (child_proc_info->zero)] = {0};
@ -736,7 +728,6 @@ dll_crt0_1 (char *)
/* FIXME: Verify forked children get their exception handler set up ok. */
exception_list cygwin_except_entry;
initial_env (false);
check_sanity_and_sync (user_data);
malloc_init ();

View File

@ -246,7 +246,7 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls)
/* If we've played with the stack, stacksize != 0. That means that
fork() was invoked from other than the main thread. Make sure that
the threadinfo information is properly set up. */
if (!fork_info->stacksize)
if (fork_info->stacksize)
{
_main_tls = &_my_tls;
_main_tls->init_thread (NULL, NULL);