summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2019-01-30 11:36:45 +0100
committerCorinna Vinschen <corinna@vinschen.de>2019-01-30 11:36:45 +0100
commita52396bd079a22be539df4d63d42425413e0a51c (patch)
treeffa92bad830cb230006be9488734c514453875f6
parent4d738e0f62403c3f1b082abf927aab00056230c5 (diff)
downloadcygnal-a52396bd079a22be539df4d63d42425413e0a51c.tar.gz
cygnal-a52396bd079a22be539df4d63d42425413e0a51c.tar.bz2
cygnal-a52396bd079a22be539df4d63d42425413e0a51c.zip
Cygwin: raise: change to call pthread_kill
POSIX requires that raise(3) is equivalent to pthread_kill(pthread_self(), sig); in multi-threaded applications. Our raise just called kill(sig). Fix that. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/release/3.03
-rw-r--r--winsup/cygwin/signal.cc5
2 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/release/3.0 b/winsup/cygwin/release/3.0
index 79affdb27..49edb3870 100644
--- a/winsup/cygwin/release/3.0
+++ b/winsup/cygwin/release/3.0
@@ -89,3 +89,6 @@ Bug Fixes
- Disallow seteuid on disabled or locked out accounts.
Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00197.html
+
+- Fix raise to work as required by POSIX.
+ (Partially) addresses: https://cygwin.com/ml/cygwin/2019-01/msg00149.html
diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc
index abefedd7b..9c51ec129 100644
--- a/winsup/cygwin/signal.cc
+++ b/winsup/cygwin/signal.cc
@@ -300,7 +300,10 @@ _pinfo::kill (siginfo_t& si)
extern "C" int
raise (int sig)
{
- return kill (myself->pid, sig);
+ pthread *thread = _my_tls.tid;
+ if (!thread)
+ return kill (myself->pid, sig);
+ return pthread_kill (thread, sig);
}
static int