mdbx-windows: handling EXCEPTION_POSSIBLE_DEADLOCK.

Change-Id: If42c7833e9c4e02fef25634e69c0bd2e926686c1
This commit is contained in:
Leonid Yuriev
2020-11-25 10:49:39 +03:00
parent 092ab094c4
commit 2dab009e76
6 changed files with 23 additions and 2 deletions

View File

@@ -492,7 +492,15 @@ MDBX_INTERNAL_FUNC int mdbx_fastmutex_destroy(mdbx_fastmutex_t *fastmutex) {
MDBX_INTERNAL_FUNC int mdbx_fastmutex_acquire(mdbx_fastmutex_t *fastmutex) {
#if defined(_WIN32) || defined(_WIN64)
EnterCriticalSection(fastmutex);
__try {
EnterCriticalSection(fastmutex);
} __except (
(GetExceptionCode() ==
0xC0000194 /* STATUS_POSSIBLE_DEADLOCK / EXCEPTION_POSSIBLE_DEADLOCK */)
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH) {
return ERROR_POSSIBLE_DEADLOCK;
}
return MDBX_SUCCESS;
#else
return pthread_mutex_lock(fastmutex);