* exceptions.cc (handle_exceptions): Just "core dump" if SIGSEGV in signal
thread. * external.cc (fillout_pinfo): Fix compiler warning. * sigproc.h: Eliminate special asm naming for sig_dispatch_pending. * sigproc.cc (sig_send): Remove debugging statements.
This commit is contained in:
parent
cdfeaeb823
commit
f9f2ed0e2b
|
@ -1,3 +1,10 @@
|
||||||
|
Fri Sep 15 22:30:40 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
|
* exceptions.cc (handle_exceptions): Just "core dump" if SIGSEGV in signal thread.
|
||||||
|
* external.cc (fillout_pinfo): Fix compiler warning.
|
||||||
|
* sigproc.h: Eliminate special asm naming for sig_dispatch_pending.
|
||||||
|
* sigproc.cc (sig_send): Remove debugging statements.
|
||||||
|
|
||||||
Wed Sep 13 14:56:47 2000 Christopher Faylor <cgf@cygnus.com>
|
Wed Sep 13 14:56:47 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
* spawn.cc (av): Hide 'calloced' field and limit cstrduping to class
|
* spawn.cc (av): Hide 'calloced' field and limit cstrduping to class
|
||||||
|
|
|
@ -34,6 +34,8 @@ extern void siglast ();
|
||||||
extern DWORD __sigfirst, __siglast;
|
extern DWORD __sigfirst, __siglast;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern DWORD sigtid;
|
||||||
|
|
||||||
static BOOL WINAPI ctrl_c_handler (DWORD);
|
static BOOL WINAPI ctrl_c_handler (DWORD);
|
||||||
static void signal_exit (int) __attribute__ ((noreturn));
|
static void signal_exit (int) __attribute__ ((noreturn));
|
||||||
static char windows_system_directory[1024];
|
static char windows_system_directory[1024];
|
||||||
|
@ -491,6 +493,7 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!myself->progname[0]
|
if (!myself->progname[0]
|
||||||
|
|| GetCurrentThreadId () == sigtid
|
||||||
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_DFL
|
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_DFL
|
||||||
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_IGN
|
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_IGN
|
||||||
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_ERR)
|
|| (void *) myself->getsig (sig).sa_handler == (void *) SIG_ERR)
|
||||||
|
@ -859,8 +862,6 @@ ctrl_c_handler (DWORD type)
|
||||||
extern "C" void __stdcall
|
extern "C" void __stdcall
|
||||||
set_process_mask (sigset_t newmask)
|
set_process_mask (sigset_t newmask)
|
||||||
{
|
{
|
||||||
extern DWORD sigtid;
|
|
||||||
|
|
||||||
mask_sync->acquire (INFINITE);
|
mask_sync->acquire (INFINITE);
|
||||||
sigset_t oldmask = myself->getsigmask ();
|
sigset_t oldmask = myself->getsigmask ();
|
||||||
newmask &= ~SIG_NONMASKABLE;
|
newmask &= ~SIG_NONMASKABLE;
|
||||||
|
|
|
@ -48,7 +48,7 @@ fillout_pinfo (pid_t pid, int winpid)
|
||||||
|
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
if (!winpid || (!nextpid && thispid != pid))
|
if (!winpid || (!nextpid && thispid != (DWORD) pid))
|
||||||
continue;
|
continue;
|
||||||
ep.pid = thispid;
|
ep.pid = thispid;
|
||||||
ep.dwProcessId = cygwin_pid (thispid);
|
ep.dwProcessId = cygwin_pid (thispid);
|
||||||
|
|
|
@ -815,7 +815,6 @@ sig_send (_pinfo *p, int sig, DWORD ebp)
|
||||||
|
|
||||||
if (!ReleaseSemaphore (thiscatch, 1, NULL) && (int) GetLastError () > 0)
|
if (!ReleaseSemaphore (thiscatch, 1, NULL) && (int) GetLastError () > 0)
|
||||||
{
|
{
|
||||||
sigproc_printf ("ReleaseSemaphore failed, %E");
|
|
||||||
/* Couldn't signal the semaphore. This probably means that the
|
/* Couldn't signal the semaphore. This probably means that the
|
||||||
* process is exiting.
|
* process is exiting.
|
||||||
*/
|
*/
|
||||||
|
@ -833,7 +832,6 @@ sigproc_printf ("ReleaseSemaphore failed, %E");
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
sigproc_printf ("ReleaseSemaphore succeeded");
|
|
||||||
|
|
||||||
/* No need to wait for signal completion unless this was a signal to
|
/* No need to wait for signal completion unless this was a signal to
|
||||||
* this process.
|
* this process.
|
||||||
|
|
|
@ -84,7 +84,7 @@ extern HANDLE signal_arrived;
|
||||||
extern HANDLE parent_alive;
|
extern HANDLE parent_alive;
|
||||||
|
|
||||||
BOOL __stdcall my_parent_is_alive ();
|
BOOL __stdcall my_parent_is_alive ();
|
||||||
extern "C" int __stdcall sig_dispatch_pending (int force = FALSE) __asm__ ("sig_dispatch_pending");
|
extern "C" int __stdcall sig_dispatch_pending (int force = FALSE);
|
||||||
extern "C" void __stdcall set_process_mask (sigset_t newmask);
|
extern "C" void __stdcall set_process_mask (sigset_t newmask);
|
||||||
int __stdcall sig_handle (int);
|
int __stdcall sig_handle (int);
|
||||||
void __stdcall sig_clear (int);
|
void __stdcall sig_clear (int);
|
||||||
|
|
Loading…
Reference in New Issue