diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2012-05-29 13:11:34 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2012-05-29 13:11:34 +0000 |
commit | d6719f7e17a613ad90039dc4adabbc82f8532d52 (patch) | |
tree | 90e2536e3462142e323e7d318372ad478137390e | |
parent | d560c4b2baba962ab5fd5beccf2aba1cad16fa2f (diff) | |
download | newlib-d6719f7e17a613ad90039dc4adabbc82f8532d52.zip newlib-d6719f7e17a613ad90039dc4adabbc82f8532d52.tar.gz newlib-d6719f7e17a613ad90039dc4adabbc82f8532d52.tar.bz2 |
* select.cc (select_stuff::wait): Temporarily disable restarting
entirely.
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/select.cc | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c265b20..7958878 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2012-05-29 Corinna Vinschen <corinna@vinschen.de> + * select.cc (select_stuff::wait): Temporarily disable restarting + entirely. + +2012-05-29 Corinna Vinschen <corinna@vinschen.de> + * security.h (cygsidlist::+=): Correctly copy well_known_sid info from source cygsid. diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index c8d7ddb..19778ce 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -331,13 +331,17 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds, { case WAIT_OBJECT_0: select_printf ("signal received"); +#if 0 /* FIXME? Partial revert of change from 2012-01-22. If the signal handler is called before the threads are stopped via cleanup, - emacs 24.x crashes in thread_pipe. For now, do not call the - signal handler if we're not in the main thread, but cleanup - before calling the signal handler. */ + emacs 24.x crashes in thread_pipe. Just restarting without + calling the signal handler makes select entirely uninterruptible + when called from a thread not the main thread, see + http://cygwin.com/ml/cygwin/2012-05/msg00580.html + So, for now, just disable restarting entirely. */ if (!return_on_signal) goto looping; /* Emulate linux behavior */ +#endif cleanup (); _my_tls.call_signal_handler (); set_sig_errno (EINTR); @@ -389,7 +393,9 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds, cleanup (); goto out; } +#if 0 looping: +#endif if (ms == INFINITE) { select_printf ("looping"); |