$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r86512 - in trunk: boost/interprocess boost/interprocess/sync/windows libs/interprocess/proj/vc7ide
From: igaztanaga_at_[hidden]
Date: 2013-10-29 04:05:28
Author: igaztanaga
Date: 2013-10-29 04:05:27 EDT (Tue, 29 Oct 2013)
New Revision: 86512
URL: http://svn.boost.org/trac/boost/changeset/86512
Log:
Fixes #9284 ("WaitForSingleObject(mutex) must handle WAIT_ABANDONED")
Text files modified: 
   trunk/boost/interprocess/errors.hpp                             |     3 ++-                                     
   trunk/boost/interprocess/sync/windows/winapi_wrapper_common.hpp |    13 ++++++++++---                           
   trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj      |     6 ++++++                                  
   3 files changed, 18 insertions(+), 4 deletions(-)
Modified: trunk/boost/interprocess/errors.hpp
==============================================================================
--- trunk/boost/interprocess/errors.hpp	Tue Oct 29 03:39:21 2013	(r86511)
+++ trunk/boost/interprocess/errors.hpp	2013-10-29 04:05:27 EDT (Tue, 29 Oct 2013)	(r86512)
@@ -114,7 +114,8 @@
    not_such_file_or_directory,
    invalid_argument,
    timeout_when_locking_error,
-   timeout_when_waiting_error
+   timeout_when_waiting_error,
+   owner_dead_error
 };
 
 typedef int    native_error_t;
Modified: trunk/boost/interprocess/sync/windows/winapi_wrapper_common.hpp
==============================================================================
--- trunk/boost/interprocess/sync/windows/winapi_wrapper_common.hpp	Tue Oct 29 03:39:21 2013	(r86511)
+++ trunk/boost/interprocess/sync/windows/winapi_wrapper_common.hpp	2013-10-29 04:05:27 EDT (Tue, 29 Oct 2013)	(r86512)
@@ -29,9 +29,16 @@
 
 inline void winapi_wrapper_wait_for_single_object(void *handle)
 {
-   if(winapi::wait_for_single_object(handle, winapi::infinite_time) != winapi::wait_object_0){
-      error_info err = system_error_code();
-      throw interprocess_exception(err);
+   unsigned long ret = winapi::wait_for_single_object(handle, winapi::infinite_time);
+   if(ret != winapi::wait_object_0){
+      if(ret != winapi::wait_abandoned){
+         error_info err = system_error_code();
+         throw interprocess_exception(err);
+      }
+      else{ //Special case for orphaned mutexes
+         winapi::release_mutex(handle);
+         throw interprocess_exception(owner_dead_error);
+      }
    }
 }
 
Modified: trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj	Tue Oct 29 03:39:21 2013	(r86511)
+++ trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj	2013-10-29 04:05:27 EDT (Tue, 29 Oct 2013)	(r86512)
@@ -356,6 +356,9 @@
                                 <File
                                         RelativePath="..\..\..\..\boost\interprocess\sync\windows\winapi_semaphore_wrapper.hpp">
                                 </File>
+				<File
+					RelativePath="..\..\..\..\boost\interprocess\sync\windows\winapi_wrapper_common.hpp">
+				</File>
                         </Filter>
                         <Filter
                                 Name="shm"
@@ -386,6 +389,9 @@
                                 Name="detail"
                                 Filter="">
                                 <File
+					RelativePath="..\..\..\..\boost\interprocess\sync\detail\common_algorithms.hpp">
+				</File>
+				<File
                                         RelativePath="..\..\..\..\boost\interprocess\sync\detail\condition_algorithm_8a.hpp">
                                 </File>
                                 <File