Subject: [Boost-bugs] [Boost C++ Libraries] #11097: test_scheduled_tp - ThreadSanitizer: heap-use-after-free
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-03-10 18:40:31
#11097: test_scheduled_tp - ThreadSanitizer: heap-use-after-free
---------------------+------------------------------
Reporter: viboes | Type: Bugs
Status: new | Milestone: To Be Determined
Component: None | Version: Boost 1.57.0
Severity: Problem | Keywords:
---------------------+------------------------------
{{{
Test output: BenPope x86_64 Ubuntu - thread - test_scheduled_tp_p / clang-
linux-3.6~tsan~c14_libc++
Rev 7e43647340008d6bf42c4fd90980f57f9483de73 / Tue, 10 Mar 2015 11:15:03
+0000
Compile [2015-03-10 15:33:41 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 -m64 -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/test_scheduled_tp_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-multi/test_scheduled_tp.o"
"../libs/thread/test/test_scheduled_tp.cpp"
Link [2015-03-10 15:33:41 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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/debug-symbols-off/threading-multi" -o
"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/test_scheduled_tp_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-multi/test_scheduled_tp_p" -Wl,--start-group
"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/test_scheduled_tp_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-multi/test_scheduled_tp.o"
"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/test_scheduled_tp_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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/address-model-64/architecture-x86
/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 -m64
RmTemps
/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/sync_tq_single_thread_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-multi/sync_tq_single_thread_p
rm -f
"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/sync_tq_single_thread_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-
multi/sync/mutual_exclusion/sync_pq/tq_single_thread_pass.o"
"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/sync_tq_single_thread_p.test
/clang-linux-3.6~tsan~c14_libc++/debug/address-model-64/architecture-x86
/debug-symbols-off/threading-multi/winrt_init.o"
Run [2015-03-10 15:33:41 UTC]: fail
==================
WARNING: ThreadSanitizer: heap-use-after-free (pid=20383)
Read of size 8 at 0x7d0c0000efe0 by thread T4 (mutexes: write M22):
#0 memcpy /home/development/llvm/3.6.0/final/llvm.src/projects
/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:638:3
(test_scheduled_tp_p+0x00000046dc20)
#1 boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>::time_since_epoch() const <null> (test_scheduled_tp_p+0x0000004fcbc6)
#2 bool boost::chrono::operator< <boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>(boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&,
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x0000004d53e5)
#3 boost::cv_status
boost::condition_variable::wait_until<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>(boost::unique_lock<boost::mutex>&,
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x000000503c28)
#4
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_until_not_empty_time_reached_or_closed(boost::unique_lock<boost::mutex>&)
<null> (test_scheduled_tp_p+0x000000500ae3)
#5
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_pull(boost::unique_lock<boost::mutex>&,
boost::detail::nullary_function<void ()>&) <null>
(test_scheduled_tp_p+0x0000005007c0)
#6
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_pull(boost::detail::nullary_function<void
()>&) <null> (test_scheduled_tp_p+0x00000050050c)
#7
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >::loop() <null>
(test_scheduled_tp_p+0x0000005002ad)
#8 void boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::call<boost::executors::scheduled_thread_pool*>(boost::executors::scheduled_thread_pool*&,
void const*) const <null> (test_scheduled_tp_p+0x0000005063c9)
#9 void boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::operator()<boost::executors::scheduled_thread_pool*>(boost::executors::scheduled_thread_pool*&)
const <null> (test_scheduled_tp_p+0x00000050627f)
#10 void
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
>::operator()<boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >&, boost::_bi::list0&, int) <null>
(test_scheduled_tp_p+0x000000506159)
#11 boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >::operator()() <null> (test_scheduled_tp_p+0x000000506084)
#12
_ZN5boost6detail6invokeINS_3_bi6bind_tIvNS_4_mfi3mf0IvNS_9executors6detail22priority_executor_baseINS_10concurrent16sync_timed_queueINS0_16nullary_functionIFvvEEENS_6chrono12steady_clockEEEEEEENS2_5list1INS2_5valueIPNS6_21scheduled_thread_poolEEEEEEEJEEEDTclclsr5boostE7forwardIT_Efp_Espclsr5boostE7forwardIT0_Efp0_EEEOSQ_DpOSR_
<null> (test_scheduled_tp_p+0x000000506008)
#13 void boost::detail::thread_data<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >>::run2<>(boost::detail::tuple_indices<>) <null>
(test_scheduled_tp_p+0x000000505faf)
#14 boost::detail::thread_data<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >>::run() <null> (test_scheduled_tp_p+0x000000505ee0)
#15 boost::(anonymous namespace)::thread_proxy(void*) <null>
(libboost_thread.so.1.58.0+0x0000000256e1)
Previous write of size 8 at 0x7d0c0000efe0 by main thread (mutexes:
write M22):
#0 operator delete(void*)
/home/development/llvm/3.6.0/final/llvm.src/projects/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:603:3
(test_scheduled_tp_p+0x00000046d2bb)
#1
std::__1::__split_buffer<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >&>::~__split_buffer() <null>
(test_scheduled_tp_p+0x0000004f6684)
#2 void
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::__push_back_slow_path<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>
>(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f47ff)
#3
boost::detail::priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f1d11)
#4
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::lock_guard<boost::mutex>&,
boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f144f)
#5
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f0ff1)
#6 void
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>::push<boost::chrono::duration<long,
boost::ratio<1l, 1000000000l> > >(boost::detail::nullary_function<void
()>&&, boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x0000004f0dcf)
#7
boost::executors::detail::scheduled_executor_base<boost::chrono::steady_clock>::submit_after(boost::detail::nullary_function<void
()>, boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > const&)
<null> (test_scheduled_tp_p+0x0000004d59bf)
#8 test_timing(int) <null> (test_scheduled_tp_p+0x0000004d2be2)
#9 main <null> (test_scheduled_tp_p+0x0000004d3757)
Mutex M22 (0x7fff5066a048) created at:
#0 pthread_mutex_init
/home/development/llvm/3.6.0/final/llvm.src/projects/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:1082:3
(test_scheduled_tp_p+0x0000004715e0)
#1 boost::mutex::mutex() <null> (test_scheduled_tp_p+0x0000004e5837)
#2
boost::concurrent::detail::sync_queue_base<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
boost::detail::priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > > >::sync_queue_base() <null>
(test_scheduled_tp_p+0x000000506572)
#3
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >::sync_priority_queue() <null>
(test_scheduled_tp_p+0x000000506513)
#4
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>::sync_timed_queue() <null>
(test_scheduled_tp_p+0x0000005064c3)
#5
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >::priority_executor_base() <null>
(test_scheduled_tp_p+0x000000506470)
#6
boost::executors::detail::scheduled_executor_base<boost::chrono::steady_clock>::scheduled_executor_base()
<null> (test_scheduled_tp_p+0x0000004ffc13)
#7
boost::executors::scheduled_thread_pool::scheduled_thread_pool(unsigned
long) <null> (test_scheduled_tp_p+0x0000004d5cf0)
#8 test_timing(int) <null> (test_scheduled_tp_p+0x0000004d2934)
#9 main <null> (test_scheduled_tp_p+0x0000004d3757)
Thread T4 (tid=20394, running) created by main thread at:
#0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects
/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3
(test_scheduled_tp_p+0x0000004701b1)
#1 boost::thread::start_thread_noexcept() <null>
(libboost_thread.so.1.58.0+0x0000000255b0)
#2 boost::thread::start_thread() <null>
(test_scheduled_tp_p+0x0000004dd8f3)
#3 boost::thread::thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >&>(boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >&) <null> (test_scheduled_tp_p+0x000000504e6a)
#4 boost::thread*
boost::thread_group::create_thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> > >(boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >) <null> (test_scheduled_tp_p+0x0000004ffcba)
#5
boost::executors::scheduled_thread_pool::scheduled_thread_pool(unsigned
long) <null> (test_scheduled_tp_p+0x0000004d5df0)
#6 test_timing(int) <null> (test_scheduled_tp_p+0x0000004d2934)
#7 main <null> (test_scheduled_tp_p+0x0000004d3757)
SUMMARY: ThreadSanitizer: heap-use-after-free ??:0
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>::time_since_epoch() const
==================
1
2
3
4
5
==================
WARNING: ThreadSanitizer: heap-use-after-free (pid=20383)
Read of size 8 at 0x7d080000edd0 by thread T10 (mutexes: write M84):
#0 memcpy /home/development/llvm/3.6.0/final/llvm.src/projects
/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:638:3
(test_scheduled_tp_p+0x00000046dc20)
#1 boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>::time_since_epoch() const <null> (test_scheduled_tp_p+0x0000004fcbc6)
#2 bool boost::chrono::operator< <boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>(boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&,
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x0000004d53e5)
#3 boost::cv_status
boost::condition_variable::wait_until<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>(boost::unique_lock<boost::mutex>&,
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x000000503c28)
#4
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_until_not_empty_time_reached_or_closed(boost::unique_lock<boost::mutex>&)
<null> (test_scheduled_tp_p+0x000000500ae3)
#5
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_pull(boost::unique_lock<boost::mutex>&,
boost::detail::nullary_function<void ()>&) <null>
(test_scheduled_tp_p+0x0000005007c0)
#6
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>,
boost::chrono::steady_clock>::wait_pull(boost::detail::nullary_function<void
()>&) <null> (test_scheduled_tp_p+0x00000050050c)
#7
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >::loop() <null>
(test_scheduled_tp_p+0x0000005002ad)
#8 void boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::call<boost::executors::scheduled_thread_pool*>(boost::executors::scheduled_thread_pool*&,
void const*) const <null> (test_scheduled_tp_p+0x0000005063c9)
#9 void boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::operator()<boost::executors::scheduled_thread_pool*>(boost::executors::scheduled_thread_pool*&)
const <null> (test_scheduled_tp_p+0x00000050627f)
#10 void
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
>::operator()<boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >&, boost::_bi::list0&, int) <null>
(test_scheduled_tp_p+0x000000506159)
#11 boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >::operator()() <null> (test_scheduled_tp_p+0x000000506084)
#12
_ZN5boost6detail6invokeINS_3_bi6bind_tIvNS_4_mfi3mf0IvNS_9executors6detail22priority_executor_baseINS_10concurrent16sync_timed_queueINS0_16nullary_functionIFvvEEENS_6chrono12steady_clockEEEEEEENS2_5list1INS2_5valueIPNS6_21scheduled_thread_poolEEEEEEEJEEEDTclclsr5boostE7forwardIT_Efp_Espclsr5boostE7forwardIT0_Efp0_EEEOSQ_DpOSR_
<null> (test_scheduled_tp_p+0x000000506008)
#13 void boost::detail::thread_data<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >>::run2<>(boost::detail::tuple_indices<>) <null>
(test_scheduled_tp_p+0x000000505faf)
#14 boost::detail::thread_data<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >>::run() <null> (test_scheduled_tp_p+0x000000505ee0)
#15 boost::(anonymous namespace)::thread_proxy(void*) <null>
(libboost_thread.so.1.58.0+0x0000000256e1)
Previous write of size 8 at 0x7d080000edd0 by thread T15 (mutexes: write
M84):
#0 operator delete(void*)
/home/development/llvm/3.6.0/final/llvm.src/projects/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:603:3
(test_scheduled_tp_p+0x00000046d2bb)
#1
std::__1::__split_buffer<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >&>::~__split_buffer() <null>
(test_scheduled_tp_p+0x0000004f6684)
#2 void
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::__push_back_slow_path<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>
>(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f47ff)
#3
boost::detail::priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f1d11)
#4
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::lock_guard<boost::mutex>&,
boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f144f)
#5
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >
>::push(boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>&&) <null>
(test_scheduled_tp_p+0x0000004f0ff1)
#6 void
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>::push<boost::chrono::duration<long,
boost::ratio<1l, 1000000000l> > >(boost::detail::nullary_function<void
()>&&, boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > > const&)
<null> (test_scheduled_tp_p+0x0000004f0dcf)
#7
boost::executors::detail::scheduled_executor_base<boost::chrono::steady_clock>::submit_after(boost::detail::nullary_function<void
()>, boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > const&)
<null> (test_scheduled_tp_p+0x0000004d59bf)
#8 func2(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >) <null>
(test_scheduled_tp_p+0x0000004d2807)
#9 void
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > >::operator()<void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list0>(boost::_bi::type<void>, void
(*&)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list0&, int) <null> (test_scheduled_tp_p+0x0000004e54f6)
#10 boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >::operator()() <null>
(test_scheduled_tp_p+0x0000004e5354)
#11
_ZN5boost6detail6invokeINS_3_bi6bind_tIvPFvPNS_9executors21scheduled_thread_poolENS_6chrono8durationIlNS_5ratioILl1ELl1000000000EEEEEENS2_5list2INS2_5valueIS6_EENSF_ISB_EEEEEEJEEEDTclclsr5boostE7forwardIT_Efp_Espclsr5boostE7forwardIT0_Efp0_EEEOSK_DpOSL_
<null> (test_scheduled_tp_p+0x0000004e52d8)
#12 void boost::detail::thread_data<boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >>::run2<>(boost::detail::tuple_indices<>) <null>
(test_scheduled_tp_p+0x0000004e527f)
#13 boost::detail::thread_data<boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >>::run() <null> (test_scheduled_tp_p+0x0000004e1270)
#14 boost::(anonymous namespace)::thread_proxy(void*) <null>
(libboost_thread.so.1.58.0+0x0000000256e1)
Mutex M84 (0x7fff5066a060) created at:
#0 pthread_mutex_init
/home/development/llvm/3.6.0/final/llvm.src/projects/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:1082:3
(test_scheduled_tp_p+0x0000004715e0)
#1 boost::mutex::mutex() <null> (test_scheduled_tp_p+0x0000004e5837)
#2
boost::concurrent::detail::sync_queue_base<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
boost::detail::priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > > >::sync_queue_base() <null>
(test_scheduled_tp_p+0x000000506572)
#3
boost::concurrent::sync_priority_queue<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::vector<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>,
std::__1::allocator<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
std::__1::less<boost::concurrent::detail::scheduled_type<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >::sync_priority_queue() <null>
(test_scheduled_tp_p+0x000000506513)
#4
boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock>::sync_timed_queue() <null>
(test_scheduled_tp_p+0x0000005064c3)
#5
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> >::priority_executor_base() <null>
(test_scheduled_tp_p+0x000000506470)
#6
boost::executors::detail::scheduled_executor_base<boost::chrono::steady_clock>::scheduled_executor_base()
<null> (test_scheduled_tp_p+0x0000004ffc13)
#7
boost::executors::scheduled_thread_pool::scheduled_thread_pool(unsigned
long) <null> (test_scheduled_tp_p+0x0000004d5cf0)
#8 test_deque_multi(int) <null> (test_scheduled_tp_p+0x0000004d3311)
#9 main <null> (test_scheduled_tp_p+0x0000004d388a)
Thread T10 (tid=20979, running) created by main thread at:
#0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects
/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3
(test_scheduled_tp_p+0x0000004701b1)
#1 boost::thread::start_thread_noexcept() <null>
(libboost_thread.so.1.58.0+0x0000000255b0)
#2 boost::thread::start_thread() <null>
(test_scheduled_tp_p+0x0000004dd8f3)
#3 boost::thread::thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >&>(boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >&) <null> (test_scheduled_tp_p+0x000000504e6a)
#4 boost::thread*
boost::thread_group::create_thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> > >(boost::_bi::bind_t<void, boost::_mfi::mf0<void,
boost::executors::detail::priority_executor_base<boost::concurrent::sync_timed_queue<boost::detail::nullary_function<void
()>, boost::chrono::steady_clock> > >,
boost::_bi::list1<boost::_bi::value<boost::executors::scheduled_thread_pool*>
> >) <null> (test_scheduled_tp_p+0x0000004ffcba)
#5
boost::executors::scheduled_thread_pool::scheduled_thread_pool(unsigned
long) <null> (test_scheduled_tp_p+0x0000004d5df0)
#6 test_deque_multi(int) <null> (test_scheduled_tp_p+0x0000004d3311)
#7 main <null> (test_scheduled_tp_p+0x0000004d388a)
Thread T15 (tid=20984, finished) created by main thread at:
#0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects
/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3
(test_scheduled_tp_p+0x0000004701b1)
#1 boost::thread::start_thread_noexcept() <null>
(libboost_thread.so.1.58.0+0x0000000255b0)
#2 boost::thread::start_thread() <null>
(test_scheduled_tp_p+0x0000004dd8f3)
#3 boost::thread::thread<boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >&>(boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >&) <null> (test_scheduled_tp_p+0x0000004d81fa)
#4 boost::thread*
boost::thread_group::create_thread<boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > > >(boost::_bi::bind_t<void, void
(*)(boost::executors::scheduled_thread_pool*,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >),
boost::_bi::list2<boost::_bi::value<boost::executors::scheduled_thread_pool*>,
boost::_bi::value<boost::chrono::duration<long, boost::ratio<1l,
1000000000l> > > > >) <null> (test_scheduled_tp_p+0x0000004d6a1a)
#5 test_deque_multi(int) <null> (test_scheduled_tp_p+0x0000004d35a2)
#6 main <null> (test_scheduled_tp_p+0x0000004d388a)
SUMMARY: ThreadSanitizer: heap-use-after-free ??:0
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::duration<long, boost::ratio<1l, 1000000000l> >
>::time_since_epoch() const
==================
No errors detected.
ThreadSanitizer: reported 2 warnings
EXIT STATUS: 66
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/11097> 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