This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Any ideas? (Was: Signal handling)
- To: "'Gnu-Win32'" <gnu-win32 at cygnus dot com>
- Subject: Any ideas? (Was: Signal handling)
- From: Sergey Okhapkin <sos at prospect dot com dot ru>
- Date: Fri, 4 Apr 1997 11:06:00 +0400
- Encoding: 28 TEXT
Hi!
In brief, signal handling in cygwin.dll does the following:
signal arrived (in separate signal processing thread);
if(signal masked or ignored)
return;
if(signal handler == SIG_DFL)
exit process;
suspend main thread;
save IP of main thread;
set main thread IP to signal handler address;
resume main thread;
exit signal thread;
when signal handler exits, restore original IP;
This scheme has one misfeature - signal handler will not start immediately
if main thread is in a blocking Win32 syscall (WaitForMultipleObjects(),
ReadConsoleInput() etc), but when this syscall terminates. This misfeature
brokes signal semantic. We can't start signal handler in a context of
signal processing thread, because this handler may never return (longjmp()
from within signal handler is allowed). Any ideas are welcome...
--
Sergey Okhapkin
Moscow, Russia
Looking for a job.
-
For help on using this list, send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".