delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/1998/06/15/06:46:33

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 <sos AT prospect DOT com DOT ru>
>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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019