diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2019-01-30 11:36:45 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2019-01-30 11:36:45 +0100 |
commit | a52396bd079a22be539df4d63d42425413e0a51c (patch) | |
tree | ffa92bad830cb230006be9488734c514453875f6 | |
parent | 4d738e0f62403c3f1b082abf927aab00056230c5 (diff) | |
download | cygnal-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.0 | 3 | ||||
-rw-r--r-- | winsup/cygwin/signal.cc | 5 |
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 |