From: cgf AT cygnus DOT com (Christopher Faylor) Subject: Re: SIGKILL and blocking 15 Jun 1998 06:46:33 -0700 Message-ID: <199806151336.JAA13520.cygnus.cygwin32.developers@kramden.cygnus.com> To: cygwin32-developers AT cygnus DOT com >From: Sergey Okhapkin >Date: Mon, 15 Jun 1998 17:26:26 +0400 > >Christopher Faylor wrote: >> >> void >> >> killme(int sig) >> >> { >> >> exit(sig); >> >> } >> >> >> >> int >> >> main(int argc, char **argv) >> >> { >> >> signal(SIGALRM, killme); >> >> alarm(5); >> >> pause(); >> >> } >> >> >> Sergey, once again - I'm pointing out that it is still possible to hang >> cygwin with something like the above. You proposed a solution. I have > >How this example may hang if sig_handle() will call do_exit() for >uncatched signal (SIGINT, for example)? Gee, I don't know. I guess it won't. If do_exit was called in the context of the signal thread and WSA_CLEANUP wasn't called, the program would just exit. Now that I answered your question, how about answering this one: Imagine that, instead of a pause() the program was doing a blocking socket operation that lasted at least 10 seconds. What would happen when the SIGALRM occurred? cgf