diff --git a/include/boost/interprocess/detail/workaround.hpp b/include/boost/interprocess/detail/workaround.hpp index daf4455..e7efbe9 100644 --- a/include/boost/interprocess/detail/workaround.hpp +++ b/include/boost/interprocess/detail/workaround.hpp @@ -23,7 +23,7 @@ #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #define BOOST_INTERPROCESS_WINDOWS - #define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION + //#define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION #define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME //Define this to connect with shared memory created with versions < 1.54 //#define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME diff --git a/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp b/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp index 428a26e..0021132 100644 --- a/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp +++ b/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp @@ -55,6 +55,11 @@ inline bool winapi_wrapper_try_wait_for_single_object(void *handle) else if(ret == winapi::wait_timeout){ return false; } + else if(ret == winapi::wait_abandoned) + { + winapi::release_mutex(handle); + throw interprocess_exception(owner_dead_error); + } else{ error_info err = system_error_code(); throw interprocess_exception(err); @@ -82,6 +87,11 @@ inline bool winapi_wrapper_timed_wait_for_single_object(void *handle, const boos else if(ret == winapi::wait_timeout){ return false; } + else if (ret == winapi::wait_abandoned) + { + winapi::release_mutex(handle); + throw interprocess_exception(owner_dead_error); + } else{ error_info err = system_error_code(); throw interprocess_exception(err);