Boost C++ Libraries: Ticket #11090: ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential deadlock) https://svn.boost.org/trac10/ticket/11090 <pre class="wiki"> Test output: BenPope x86_64 Ubuntu - thread - ex_future_unwrap / clang-linux-3.6~tsan~c14_libc++ Rev 9b68e2eec037cbcb6f96d7d54079e7e1a6a274ab / Mon, 09 Mar 2015 11:14:53 +0000 Compile [2015-03-09 15:31:16 UTC]: succeed "clang++-3.6" -c -x c++ -Wextra -Wno-long-long -Wno-unused-parameter -Wunused-function -std=c++1y -stdlib=libc++ -fsanitize=thread -O0 -fno-inline -Wall -pthread -fPIC -Wextra -Wno-long-long -Wno-unused-parameter -Wunused-function -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED -DBOOST_THREAD_USE_DLL=1 -I".." -o "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/winrt_init.o" "../libs/thread/test/winrt_init.cpp" Link [2015-03-09 15:31:16 UTC]: succeed "clang++-3.6" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -o "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/ex_future_unwrap" -Wl,--start-group "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/future_unwrap.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/winrt_init.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_thread.so.1.58.0" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_chrono.so.1.58.0" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_system.so.1.58.0" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -fsanitize=thread -lc++ -lc++abi -pthread RmTemps /home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/ex_future_unwrap rm -f "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/future_unwrap.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/ex_future_unwrap.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/winrt_init.o" Run [2015-03-09 15:31:16 UTC]: fail ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M22 (0x7d4400009dc0) =&gt; M30 (0x7d4400009b40) =&gt; M22 Mutex M30 acquired here while holding mutex M22 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M22 acquired here while holding mutex M30 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M48 (0x7d4400009b40) =&gt; M56 (0x7d4400009dc0) =&gt; M48 Mutex M56 acquired here while holding mutex M48 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M48 acquired here while holding mutex M56 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M69 (0x7d440001dc80) =&gt; M77 (0x7d440001df00) =&gt; M69 Mutex M77 acquired here while holding mutex M69 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M69 acquired here while holding mutex M77 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M90 (0x7d4400013f00) =&gt; M98 (0x7d4400009a00) =&gt; M90 Mutex M98 acquired here while holding mutex M90 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M90 acquired here while holding mutex M98 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M111 (0x7d4400027f00) =&gt; M119 (0x7d44000098c0) =&gt; M111 Mutex M119 acquired here while holding mutex M111 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M111 acquired here while holding mutex M119 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M132 (0x7d440003bf00) =&gt; M148 (0x7d4400009780) =&gt; M132 Mutex M148 acquired here while holding mutex M132 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M132 acquired here while holding mutex M148 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M153 (0x7d4400031f00) =&gt; M161 (0x7d4400009640) =&gt; M153 Mutex M161 acquired here while holding mutex M153 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M153 acquired here while holding mutex M161 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M174 (0x7d4400045f00) =&gt; M182 (0x7d4400009500) =&gt; M174 Mutex M182 acquired here while holding mutex M174 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M174 acquired here while holding mutex M182 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M195 (0x7d4400059f00) =&gt; M203 (0x7d44000093c0) =&gt; M195 Mutex M203 acquired here while holding mutex M195 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M195 acquired here while holding mutex M203 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M216 (0x7d440004ff00) =&gt; M232 (0x7d4400009280) =&gt; M216 Mutex M232 acquired here while holding mutex M216 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M216 acquired here while holding mutex M232 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M237 (0x7d440006df00) =&gt; M253 (0x7d4400009140) =&gt; M237 Mutex M253 acquired here while holding mutex M237 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M237 acquired here while holding mutex M253 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M258 (0x7d4400063f00) =&gt; M266 (0x7d4400009000) =&gt; M258 Mutex M266 acquired here while holding mutex M258 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M258 acquired here while holding mutex M266 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M279 (0x7d4400077f00) =&gt; M287 (0x7d4400008ec0) =&gt; M279 Mutex M287 acquired here while holding mutex M279 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M279 acquired here while holding mutex M287 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M300 (0x7d440008bf00) =&gt; M308 (0x7d4400008d80) =&gt; M300 Mutex M308 acquired here while holding mutex M300 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M300 acquired here while holding mutex M308 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M324 (0x7d4400008d80) =&gt; M340 (0x7d440008bf00) =&gt; M324 Mutex M340 acquired here while holding mutex M324 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M324 acquired here while holding mutex M340 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M345 (0x7d4400081c80) =&gt; M353 (0x7d4400081f00) =&gt; M345 Mutex M353 acquired here while holding mutex M345 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M345 acquired here while holding mutex M353 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M366 (0x7d4400095f00) =&gt; M374 (0x7d4400008c40) =&gt; M366 Mutex M374 acquired here while holding mutex M366 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M366 acquired here while holding mutex M374 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M390 (0x7d4400008c40) =&gt; M406 (0x7d4400095f00) =&gt; M390 Mutex M406 acquired here while holding mutex M390 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M390 acquired here while holding mutex M406 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M411 (0x7d44000a9c80) =&gt; M419 (0x7d44000a9f00) =&gt; M411 Mutex M419 acquired here while holding mutex M411 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M411 acquired here while holding mutex M419 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M432 (0x7d440009ff00) =&gt; M440 (0x7d4400008b00) =&gt; M432 Mutex M440 acquired here while holding mutex M432 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M432 acquired here while holding mutex M440 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M453 (0x7d44000bdf00) =&gt; M461 (0x7d44000089c0) =&gt; M453 Mutex M461 acquired here while holding mutex M453 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M453 acquired here while holding mutex M461 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M474 (0x7d44000b3f00) =&gt; M482 (0x7d4400008880) =&gt; M474 Mutex M482 acquired here while holding mutex M474 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M474 acquired here while holding mutex M482 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M495 (0x7d44000c7f00) =&gt; M511 (0x7d4400008740) =&gt; M495 Mutex M511 acquired here while holding mutex M495 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M495 acquired here while holding mutex M511 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2e0) #7 boost::future&lt;int&gt;::get() &lt;null&gt; (ex_future_unwrap+0x0000004f56d8) #8 main &lt;null&gt; (ex_future_unwrap+0x0000004f3351) SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) ??:0 boost::mutex::lock() ================== ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=3377) Cycle in lock order graph: M516 (0x7d44000dbf00) =&gt; M524 (0x7d4400008600) =&gt; M516 Mutex M524 acquired here while holding mutex M516 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::detail::shared_state_base::inc() &lt;null&gt; (ex_future_unwrap+0x0000004fc4cf) #5 boost::detail::basic_future&lt;int&gt;::basic_future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fc380) #6 boost::future&lt;int&gt;::future(boost::shared_ptr&lt;boost::detail::shared_state&lt;int&gt; &gt;) &lt;null&gt; (ex_future_unwrap+0x0000004fbe95) #7 boost::future&lt;int&gt; boost::detail::make_future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;(boost::unique_lock&lt;boost::mutex&gt;&amp;, boost::future&lt;boost::future&lt;int&gt; &gt;&amp;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fb6ce) #8 boost::future&lt;boost::future&lt;int&gt; &gt;::unwrap() &lt;null&gt; (ex_future_unwrap+0x0000004f53fb) #9 main &lt;null&gt; (ex_future_unwrap+0x0000004f3343) Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message Mutex M516 acquired here while holding mutex M524 in main thread: #0 pthread_mutex_lock /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:3008:3 (ex_future_unwrap+0x0000004afd00) #1 boost::mutex::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f9abb) #2 boost::unique_lock&lt;boost::mutex&gt;::lock() &lt;null&gt; (ex_future_unwrap+0x0000004f99e6) #3 boost::unique_lock&lt;boost::mutex&gt;::unique_lock(boost::mutex&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004f68e0) #4 boost::future&lt;boost::future&lt;int&gt; &gt;::get() &lt;null&gt; (ex_future_unwrap+0x00000050350b) #5 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::parent_value(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x000000503358) #6 boost::detail::future_unwrap_shared_state&lt;boost::future&lt;boost::future&lt;int&gt; &gt;, int&gt;::get(boost::unique_lock&lt;boost::mutex&gt;&amp;) &lt;null&gt; (ex_future_unwrap+0x0000004fe2... [The content has been trimmed by the report system because it exceeds 65536 bytes] </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/11090 Trac 1.4.3 viboes Mon, 09 Mar 2015 23:43:50 GMT owner, status changed https://svn.boost.org/trac10/ticket/11090#comment:1 https://svn.boost.org/trac10/ticket/11090#comment:1 <ul> <li><strong>owner</strong> changed from <span class="trac-author">Anthony Williams</span> to <span class="trac-author">viboes</span> </li> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> Ticket viboes Tue, 10 Mar 2015 18:53:20 GMT milestone changed https://svn.boost.org/trac10/ticket/11090#comment:2 https://svn.boost.org/trac10/ticket/11090#comment:2 <ul> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost 1.58.0</span> </li> </ul> <p> <a class="ext-link" href="https://github.com/boostorg/thread/commit/dcebe26a114263fbd7c87a50641b6378048a4dc4"><span class="icon">​</span>https://github.com/boostorg/thread/commit/dcebe26a114263fbd7c87a50641b6378048a4dc4</a> </p> Ticket viboes Sun, 28 Jun 2015 09:35:52 GMT milestone changed https://svn.boost.org/trac10/ticket/11090#comment:3 https://svn.boost.org/trac10/ticket/11090#comment:3 <ul> <li><strong>milestone</strong> <span class="trac-field-old">Boost 1.58.0</span> → <span class="trac-field-new">Boost 1.59.0</span> </li> </ul> Ticket viboes Thu, 13 Aug 2015 07:00:01 GMT milestone changed https://svn.boost.org/trac10/ticket/11090#comment:4 https://svn.boost.org/trac10/ticket/11090#comment:4 <ul> <li><strong>milestone</strong> <span class="trac-field-old">Boost 1.59.0</span> → <span class="trac-field-new">Boost 1.60.0</span> </li> </ul> Ticket viboes Wed, 02 Sep 2015 18:07:39 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/11090#comment:5 https://svn.boost.org/trac10/ticket/11090#comment:5 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> <a class="ext-link" href="https://github.com/boostorg/thread/commit/a3497e1ffceb14318ff09e339a53293926351057"><span class="icon">​</span>https://github.com/boostorg/thread/commit/a3497e1ffceb14318ff09e339a53293926351057</a> </p> Ticket