aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Yano via Cygwin-patches <cygwin-patches@cygwin.com>2021-01-29 12:46:26 +0900
committerCorinna Vinschen <corinna@vinschen.de>2021-02-01 10:54:04 +0100
commit6c1552b0da7c7cdf1cf1668b3706c0d1a14c9b2d (patch)
tree2318def65e4a334fc56ea95e8f846a7549f3d126
parent6ab2d284e54384cc6e7dc13eed1eddd12bd77879 (diff)
downloadnewlib-6c1552b0da7c7cdf1cf1668b3706c0d1a14c9b2d.zip
newlib-6c1552b0da7c7cdf1cf1668b3706c0d1a14c9b2d.tar.gz
newlib-6c1552b0da7c7cdf1cf1668b3706c0d1a14c9b2d.tar.bz2
Cygwin: exceptions.cc: Suspend all threads in sig_handle_tty_stop().
- Currently, thread created by pthread_create() is not suspended by the signal SIGTSTP. For example, even if a process with a thread is suspended by Ctrl-Z, the thread continues running. This patch fixes the issue.
-rw-r--r--winsup/cygwin/exceptions.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index c98b92d..3a68233 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -902,7 +902,9 @@ sig_handle_tty_stop (int sig, siginfo_t *, void *)
thread. */
/* Use special cygwait parameter to handle SIGCONT. _main_tls.sig will
be cleared under lock when SIGCONT is detected. */
+ pthread::suspend_all_except_self ();
DWORD res = cygwait (NULL, cw_infinite, cw_sig_cont);
+ pthread::resume_all ();
switch (res)
{
case WAIT_SIGNALED: