summaryrefslogtreecommitdiff
path: root/rts/win32
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-03-27 09:10:57 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-03-27 18:10:06 -0400
commitf72d4ebbcc02be7921e03c529198605031224080 (patch)
tree8f78d9451c06c05c9a4de02e4fc66c9c78bd154c /rts/win32
parent59375de11f1aed05af87f2430196bde3c9a921b1 (diff)
downloadhaskell-f72d4ebbcc02be7921e03c529198605031224080.tar.gz
rts: Fix joinOSThread on Windows
Previously we were treating the thread ID as a HANDLE, but it is not. We must first OpenThread.
Diffstat (limited to 'rts/win32')
-rw-r--r--rts/win32/OSThreads.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/rts/win32/OSThreads.c b/rts/win32/OSThreads.c
index 07b0e3f034..46e363b3ab 100644
--- a/rts/win32/OSThreads.c
+++ b/rts/win32/OSThreads.c
@@ -447,7 +447,12 @@ interruptOSThread (OSThreadId id)
void
joinOSThread (OSThreadId id)
{
- int ret = WaitForSingleObject(id, INFINITE);
+ HANDLE hdl;
+ if (!(hdl = OpenThread(SYNCHRONIZE,FALSE,id))) {
+ sysErrorBelch("interruptOSThread: OpenThread");
+ stg_exit(EXIT_FAILURE);
+ }
+ int ret = WaitForSingleObject(hdl, INFINITE);
if (ret != WAIT_OBJECT_0) {
sysErrorBelch("joinOSThread: error %d", ret);
}