summaryrefslogtreecommitdiff
path: root/src/os_win/os_thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_win/os_thread.c')
-rw-r--r--src/os_win/os_thread.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/os_win/os_thread.c b/src/os_win/os_thread.c
index 2b846216442..a34dff776b6 100644
--- a/src/os_win/os_thread.c
+++ b/src/os_win/os_thread.c
@@ -31,19 +31,24 @@ __wt_thread_create(WT_SESSION_IMPL *session,
int
__wt_thread_join(WT_SESSION_IMPL *session, wt_thread_t tid)
{
- WT_DECL_RET;
+ DWORD windows_error;
- if ((ret = WaitForSingleObject(tid, INFINITE)) != WAIT_OBJECT_0)
- /*
- * If we fail to wait, we will leak handles so do not continue
- */
- WT_PANIC_RET(session,
- ret == WAIT_FAILED ? __wt_getlasterror() : ret,
- "thread join: WaitForSingleObject");
+ if ((windows_error =
+ WaitForSingleObject(tid, INFINITE)) != WAIT_OBJECT_0) {
+ if (windows_error == WAIT_FAILED)
+ windows_error = __wt_getlasterror();
+ __wt_errx(session, "thread join: WaitForSingleObject: %s",
+ __wt_formatmessage(session, windows_error));
+
+ /* If we fail to wait, we will leak handles, do not continue. */
+ return (WT_PANIC);
+ }
if (CloseHandle(tid) == 0) {
- WT_RET_MSG(session,
- __wt_getlasterror(), "thread join: CloseHandle");
+ windows_error = __wt_getlasterror();
+ __wt_errx(session, "thread join: CloseHandle: %s",
+ __wt_formatmessage(session, windows_error));
+ return (__wt_map_windows_error(windows_error));
}
return (0);