[Boost-bugs] [Boost C++ Libraries] #11090: ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential deadlock)

Subject: [Boost-bugs] [Boost C++ Libraries] #11090: ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential deadlock)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-03-09 23:41:28


#11090: ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential
deadlock)
------------------------------+----------------------
 Reporter: viboes | Owner: anthonyw
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: thread
  Version: Boost 1.57.0 | Severity: Problem
 Keywords: |
------------------------------+----------------------
 {{{

 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) => M30 (0x7d4400009b40)
 => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M56 (0x7d4400009dc0)
 => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M77 (0x7d440001df00)
 => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M98 (0x7d4400009a00)
 => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M119
 (0x7d44000098c0) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M148
 (0x7d4400009780) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M161
 (0x7d4400009640) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M182
 (0x7d4400009500) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M203
 (0x7d44000093c0) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M232
 (0x7d4400009280) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M253
 (0x7d4400009140) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M266
 (0x7d4400009000) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M287
 (0x7d4400008ec0) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M308
 (0x7d4400008d80) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M340
 (0x7d440008bf00) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M353
 (0x7d4400081f00) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M374
 (0x7d4400008c40) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M406
 (0x7d4400095f00) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M419
 (0x7d44000a9f00) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M440
 (0x7d4400008b00) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M461
 (0x7d44000089c0) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M482
 (0x7d4400008880) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M511
 (0x7d4400008740) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2e0)
     #7 boost::future<int>::get() <null> (ex_future_unwrap+0x0000004f56d8)
     #8 main <null> (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) => M524
 (0x7d4400008600) => 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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::detail::shared_state_base::inc() <null>
 (ex_future_unwrap+0x0000004fc4cf)
     #5
 boost::detail::basic_future<int>::basic_future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fc380)
     #6
 boost::future<int>::future(boost::shared_ptr<boost::detail::shared_state<int>
>) <null> (ex_future_unwrap+0x0000004fbe95)
     #7 boost::future<int>
 boost::detail::make_future_unwrap_shared_state<boost::future<boost::future<int>
>, int>(boost::unique_lock<boost::mutex>&,
 boost::future<boost::future<int> >&&) <null>
 (ex_future_unwrap+0x0000004fb6ce)
     #8 boost::future<boost::future<int> >::unwrap() <null>
 (ex_future_unwrap+0x0000004f53fb)
     #9 main <null> (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() <null> (ex_future_unwrap+0x0000004f9abb)
     #2 boost::unique_lock<boost::mutex>::lock() <null>
 (ex_future_unwrap+0x0000004f99e6)
     #3 boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&) <null>
 (ex_future_unwrap+0x0000004f68e0)
     #4 boost::future<boost::future<int> >::get() <null>
 (ex_future_unwrap+0x00000050350b)
     #5
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::parent_value(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x000000503358)
     #6
 boost::detail::future_unwrap_shared_state<boost::future<boost::future<int>
>, int>::get(boost::unique_lock<boost::mutex>&) <null>
 (ex_future_unwrap+0x0000004fe2...

 [The content has been trimmed by the report system because it exceeds
 65536 bytes]


 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11090>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC