==24589== Helgrind, a thread error detector ==24589== Copyright (C) 2007-2012, and GNU GPL'd, by OpenWorks LLP et al. ==24589== Using Valgrind-3.8.0 and LibVEX; rerun with -h for copyright info ==24589== Command: ./a.out ==24589== Parent PID: 24303 ==24589== ==24589== ---Thread-Announcement------------------------------------------ ==24589== ==24589== Thread #1 is the program's root thread ==24589== ==24589== ---Thread-Announcement------------------------------------------ ==24589== ==24589== Thread #2 was created ==24589== at 0x5B6B13E: clone (in /lib64/libc-2.15.so) ==24589== by 0x4E3B05F: do_clone.clone.2 (in /lib64/libpthread-2.15.so) ==24589== by 0x4E3C490: pthread_create@@GLIBC_2.2.5 (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2DE01: pthread_create_WRK (hg_intercepts.c:255) ==24589== by 0x4C2DF9F: pthread_create@* (hg_intercepts.c:286) ==24589== by 0x506129E: boost::thread::start_thread() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x404BC1: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:204) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during read of size 4 at 0x6038A28 by thread #1 ==24589== Locks held: none ==24589== at 0x4E3E3CA: pthread_mutex_lock (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E373: pthread_mutex_lock (hg_intercepts.c:487) ==24589== by 0x5064BB0: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F8FA: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A28 is 56 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during read of size 4 at 0x6038A2C by thread #1 ==24589== Locks held: none ==24589== at 0x4E3E3D2: pthread_mutex_lock (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E373: pthread_mutex_lock (hg_intercepts.c:487) ==24589== by 0x5064BB0: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A2C is 60 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during write of size 4 at 0x6038A2C by thread #1 ==24589== Locks held: none ==24589== at 0x4E3E3D2: pthread_mutex_lock (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E373: pthread_mutex_lock (hg_intercepts.c:487) ==24589== by 0x5064BB0: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A2C is 60 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during write of size 4 at 0x6038A28 by thread #1 ==24589== Locks held: none ==24589== at 0x4E3E3D7: pthread_mutex_lock (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E373: pthread_mutex_lock (hg_intercepts.c:487) ==24589== by 0x5064BB0: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F8FA: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A28 is 56 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during write of size 4 at 0x6038A28 by thread #1 ==24589== Locks held: none ==24589== at 0x4E3F8FA: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5064D7F: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F8FA: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A28 is 56 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during read of size 4 at 0x6038A2C by thread #1 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5064D7F: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A2C is 60 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during write of size 4 at 0x6038A2C by thread #1 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5064D7F: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 4 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3F920: __pthread_mutex_unlock_usercnt (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2E86D: pthread_mutex_unlock (hg_intercepts.c:612) ==24589== by 0x5061414: thread_proxy (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4C2DF88: mythread_wrapper (hg_intercepts.c:219) ==24589== by 0x4E3BDA5: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== Address 0x6038A2C is 60 bytes inside a block of size 408 alloc'd ==24589== at 0x4C2B688: operator new(unsigned long) (vg_replace_malloc.c:298) ==24589== by 0x4058E6: boost::detail::thread_data >* boost::detail::heap_new_impl >, boost::_bi::bind_t&>(boost::_bi::bind_t&) (thread_heap_alloc.hpp:47) ==24589== by 0x4056F8: boost::detail::thread_data >* boost::detail::heap_new >, boost::_bi::bind_t >(boost::_bi::bind_t&) (thread_heap_alloc.hpp:73) ==24589== by 0x405366: boost::shared_ptr boost::thread::make_thread_info >(boost::_bi::bind_t) (thread.hpp:140) ==24589== by 0x404BB5: boost::thread::thread >(boost::_bi::bind_t, boost::disable_if&, boost::detail::thread_move_t > >, boost::thread::dummy*>::type) (thread.hpp:202) ==24589== by 0x4030C2: main (test.cpp:9) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Possible data race during read of size 8 at 0x6C33D30 by thread #1 ==24589== Locks held: none ==24589== at 0x4E3CFE3: pthread_join (in /lib64/libpthread-2.15.so) ==24589== by 0x4C2D68B: pthread_join_WRK (hg_intercepts.c:320) ==24589== by 0x4C2DFAA: pthread_join (hg_intercepts.c:339) ==24589== by 0x5064FDC: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== This conflicts with a previous write of size 8 by thread #2 ==24589== Locks held: none ==24589== at 0x4E3BDA6: start_thread (in /lib64/libpthread-2.15.so) ==24589== by 0x5B6B17C: clone (in /lib64/libc-2.15.so) ==24589== ==24589== ---------------------------------------------------------------- ==24589== ==24589== Thread #1: pthread_cond_destroy: destruction of unknown cond var ==24589== at 0x4C2CC69: pthread_cond_destroy_WRK (hg_intercepts.c:940) ==24589== by 0x4C2E976: pthread_cond_destroy@* (hg_intercepts.c:958) ==24589== by 0x5060C31: boost::detail::thread_data_base::~thread_data_base() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x405A9D: boost::detail::thread_data >::~thread_data() (in /home/cstankevitz/Delete/a.out) ==24589== by 0x405AD4: boost::detail::thread_data >::~thread_data() (thread.hpp:42) ==24589== by 0x405B11: void boost::checked_delete > >(boost::detail::thread_data >*) (checked_delete.hpp:34) ==24589== by 0x405DB2: boost::detail::sp_counted_impl_p > >::dispose() (sp_counted_impl.hpp:78) ==24589== by 0x506503D: boost::thread::join() (in /usr/lib64/libboost_thread-mt-1_48.so.1.48.0) ==24589== by 0x4030CE: main (test.cpp:11) ==24589== ==24589== ==24589== For counts of detected and suppressed errors, rerun with: -v ==24589== Use --history-level=approx or =none to gain increased speed, at ==24589== the cost of reduced accuracy of conflicting-access information ==24589== ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)