mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Bug #26564: Windows implementation of pthread_join crashes
MySQL uses _beginthread()/_endthread() instead of _beginthreadex()/_endthreadex() to create/end its threads on Windows. According to MSDN _endthread() does close the thread handle. So there's no need the handle to be closed explicitly. Besides : WaitForSingleObject(, INFINITE) != WAIT_OBJECT_0) is true for all practical cases as the other two possible return codes (according to MSDN) cannot happen in that case the CloseHandle() was actually a dead code. Fixed by removing the CloseHandle() call. No test case added because it's not possible to test for absence of dead code. include/my_pthread.h: Bug #26564: Don't call CloseHandle since we use beginthread/endthread instead of beginthreadex/endthreadex.
This commit is contained in:
@@ -181,8 +181,7 @@ void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
|
||||
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
|
||||
#define pthread_kill(A,B) pthread_dummy(0)
|
||||
|
||||
#define pthread_join(A,B) \
|
||||
((WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0) || !CloseHandle(A))
|
||||
#define pthread_join(A,B) (WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0)
|
||||
|
||||
/* Dummy defines for easier code */
|
||||
#define pthread_attr_setdetachstate(A,B) pthread_dummy(0)
|
||||
|
Reference in New Issue
Block a user