* cygtls.cc (handle_threadlist_exception): Improve diagnostic output.
* sigproc.cc (child_info::sync): Only clear hProcess when execing. (wait_sig): Protect readsig handle.
This commit is contained in:
parent
1f5c3042d5
commit
b72a5c0767
|
@ -1,3 +1,10 @@
|
|||
2005-10-18 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* cygtls.cc (handle_threadlist_exception): Improve diagnostic output.
|
||||
|
||||
* sigproc.cc (child_info::sync): Only clear hProcess when execing.
|
||||
(wait_sig): Protect readsig handle.
|
||||
|
||||
2005-10-18 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* autoload.cc (NtLockVirtualMemory): Import.
|
||||
|
|
|
@ -241,26 +241,24 @@ _cygtls::set_siginfo (sigpacket *pack)
|
|||
|
||||
extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD);
|
||||
static int
|
||||
handle_threadlist_exception (EXCEPTION_RECORD *e, void *frame, CONTEXT *, void *)
|
||||
handle_threadlist_exception (EXCEPTION_RECORD *e, void *frame, CONTEXT *c, void *)
|
||||
{
|
||||
if (e->ExceptionCode != STATUS_ACCESS_VIOLATION)
|
||||
{
|
||||
system_printf ("handle_threadlist_exception called with exception code %d\n",
|
||||
e->ExceptionCode);
|
||||
system_printf ("unhandled exception %p at %p", e->ExceptionCode, c->Eip);
|
||||
return 1;
|
||||
}
|
||||
|
||||
sentry here;
|
||||
if (threadlist_ix == BAD_IX)
|
||||
{
|
||||
system_printf ("handle_threadlist_exception called with threadlist_ix %d\n",
|
||||
BAD_IX);
|
||||
system_printf ("called with threadlist_ix %d", BAD_IX);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!here.acquired ())
|
||||
{
|
||||
system_printf ("handle_threadlist_exception couldn't aquire muto\n");
|
||||
system_printf ("couldn't aquire muto");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -846,7 +846,7 @@ child_info::sync (pid_t pid, HANDLE& hProcess, DWORD howlong)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (type != _PROC_FORK && x == nsubproc_ready)
|
||||
if (type == _PROC_EXEC && x == nsubproc_ready)
|
||||
{
|
||||
ForceCloseHandle1 (hProcess, childhProcess);
|
||||
hProcess = NULL;
|
||||
|
@ -1057,6 +1057,7 @@ wait_sig (VOID *)
|
|||
|
||||
if (!CreatePipe (&readsig, &myself->sendsig, sec_user_nih (sa_buf), 0))
|
||||
api_fatal ("couldn't create signal pipe, %E");
|
||||
ProtectHandle (readsig);
|
||||
sigCONT = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL);
|
||||
my_sendsig = myself->sendsig;
|
||||
|
||||
|
@ -1186,7 +1187,7 @@ wait_sig (VOID *)
|
|||
break;
|
||||
}
|
||||
|
||||
CloseHandle (readsig);
|
||||
ForceCloseHandle (readsig);
|
||||
sigproc_printf ("signal thread exiting");
|
||||
ExitThread (0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue