* dll_init.cc (dll_dllcrt0): Don't try to initialize dll data if we're

dynamically loaded since fork() doesn't work in that scenario anyway.
(dll_dllcrt0_1): Don't accommodate dynamically loaded dlls.
* exceptions.cc (ctrl_c_handler): Don't lock the process; there's too much risk
of deadlock.
* sigproc.cc (_cygtls::remove_wq): Don't try to remove anything from the waitq
if there is obviously nothing there.
* strace.cc (strace::activate): Allow stracing dynamically loaded cygwin1.dll.
This commit is contained in:
Christopher Faylor 2011-12-08 06:17:49 +00:00
parent 069e637c0e
commit 5025bf330b
5 changed files with 18 additions and 13 deletions

View File

@ -1,3 +1,15 @@
2011-12-08 Christopher Faylor <me.cygwin2011@cgf.cx>
* dll_init.cc (dll_dllcrt0): Don't try to initialize dll data if we're
dynamically loaded since fork() doesn't work in that scenario anyway.
(dll_dllcrt0_1): Don't accommodate dynamically loaded dlls.
* exceptions.cc (ctrl_c_handler): Don't lock the process; there's too
much risk of deadlock.
* sigproc.cc (_cygtls::remove_wq): Don't try to remove anything from
the waitq if there is obviously nothing there.
* strace.cc (strace::activate): Allow stracing dynamically loaded
cygwin1.dll.
2011-12-07 Christopher Faylor <me.cygwin2011@cgf.cx>
* fhandler_termios.cc (tty_min::kill_pgrp): Don't send __SIGSETPGRP

View File

@ -546,12 +546,10 @@ struct dllcrt0_info
extern "C" int
dll_dllcrt0 (HMODULE h, per_process *p)
{
if (dynamically_loaded)
return 1;
dllcrt0_info x (h, p);
if (_my_tls.isinitialized ())
dll_dllcrt0_1 (&x);
else
_my_tls.call ((DWORD (*) (void *, void *)) dll_dllcrt0_1, &x);
dll_dllcrt0_1 (&x);
return x.res;
}
@ -592,11 +590,7 @@ dll_dllcrt0_1 (VOID *x)
However, that's just a note for the record; at the moment, we can't
see any need to worry about this happening. */
/* Partially initialize Cygwin guts for non-cygwin apps. */
if (dynamically_loaded && user_data->magic_biscuit == 0)
dll_crt0 (p);
else
check_sanity_and_sync (p);
check_sanity_and_sync (p);
dll_type type;

View File

@ -927,7 +927,6 @@ static BOOL WINAPI
ctrl_c_handler (DWORD type)
{
static bool saw_close;
lock_process now;
if (!cygwin_finished_initializing)
{

View File

@ -346,7 +346,7 @@ out1:
void
_cygtls::remove_wq (DWORD wait)
{
if (exit_state < ES_FINAL && sync_proc_subproc
if (exit_state < ES_FINAL && waitq_head.next && sync_proc_subproc
&& sync_proc_subproc.acquire (wait))
{
for (waitq *w = &waitq_head; w->next != NULL; w = w->next)

View File

@ -34,7 +34,7 @@ class strace NO_COPY strace;
void
strace::activate (bool isfork)
{
if (!dynamically_loaded && !_active && being_debugged ())
if (!_active && being_debugged ())
{
char buf[30];
__small_sprintf (buf, "cYg%8x %x %d", _STRACE_INTERFACE_ACTIVATE_ADDR, &_active, isfork);