[Bug libstdc++/68519] condition_variable::wait_for does not work properly with float duration
trippels at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Nov 24 14:45:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68519
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |trippels at gcc dot gnu.org
Resolution|--- |INVALID
--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Build with -fsanitize=thread:
==================
WARNING: ThreadSanitizer: data race (pid=15270)
Write of size 1 at 0x000000403540 by main thread:
#0 main /var/tmp/t.cc:32 (a.out+0x0000004016d4)
Previous read of size 1 at 0x000000403540 by thread T1 (mutexes: write M10):
Do something...
#0 void thread_loop<std::chrono::duration<float, std::ratio<1l, 1l> >
>(std::chrono::duration<float, std::ratio<1l, 1l> >) /var/tmp/t.cc:17
(a.out+0x000000401ad3)
Do something...
#1 void std::_Bind_simple<void (*(std::chrono::duration<float,
std::ratio<1l, 1l> >))(std::chrono::duration<float, std::ratio<1l, 1l>
>)>::_M_invoke<0ul>(std::_Index_tuple<0ul>)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/functional:1430
(a.out+0x00000040193e)
#2 std::_Bind_simple<void (*(std::chrono::duration<float, std::ratio<1l,
1l> >))(std::chrono::duration<float, std::ratio<1l, 1l> >)>::operator()()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/functional:1419
(a.out+0x00000040193e)
Do something...
#3 std::thread::_State_impl<std::_Bind_simple<void
(*(std::chrono::duration<float, std::ratio<1l, 1l>
>))(std::chrono::duration<float, std::ratio<1l, 1l> >)> >::_M_run()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/thread:186
(a.out+0x00000040193e)
#4 execute_native_thread_routine <null> (libstdc++.so.6+0x0000000d082e)
Location is global 'finish' of size 1 at 0x000000403540
(a.out+0x000000403540)
Mutex M10 (0x0000004035a0) created at:
#0 pthread_mutex_lock <null> (libtsan.so.0+0x000000042be0)
Do something...
#1 __gthread_mutex_lock
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/x86_64-pc-linux-gnu/bits/gthr-default.h:748
(a.out+0x0000004019ee)
#2 std::mutex::lock()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/bits/mutex.h:103
(a.out+0x0000004019ee)
#3 std::unique_lock<std::mutex>::lock()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/bits/mutex.h:254
(a.out+0x0000004019ee)
#4 std::unique_lock<std::mutex>::unique_lock(std::mutex&)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/bits/mutex.h:184
(a.out+0x0000004019ee)
Do something...
#5 void thread_loop<std::chrono::duration<float, std::ratio<1l, 1l> >
>(std::chrono::duration<float, std::ratio<1l, 1l> >) /var/tmp/t.cc:16
(a.out+0x0000004019ee)
#6 void std::_Bind_simple<void (*(std::chrono::duration<float,
std::ratio<1l, 1l> >))(std::chrono::duration<float, std::ratio<1l, 1l>
>)>::_M_invoke<0ul>(std::_Index_tuple<0ul>)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/functional:1430
(a.out+0x00000040193e)
#7 std::_Bind_simple<void (*(std::chrono::duration<float, std::ratio<1l,
1l> >))(std::chrono::duration<float, std::ratio<1l, 1l> >)>::operator()()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/functional:1419
(a.out+0x00000040193e)
#8 std::thread::_State_impl<std::_Bind_simple<void
(*(std::chrono::duration<float, std::ratio<1l, 1l>
>))(std::chrono::duration<float, std::ratio<1l, 1l> >)> >::_M_run()
/usr/lib/gcc/x86_64-pc-linux-gnu/6.0.0/include/g++-v6/thread:186
(a.out+0x00000040193e)
Do something...
#9 execute_native_thread_routine <null> (libstdc++.so.6+0x0000000d082e)
Thread T1 (tid=15272, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x00000002bdd8)
#1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) <null>
(libstdc++.so.6+0x0000000d0b34)
Do something...
#2 __libc_start_main ../csu/libc-start.c:289 (libc.so.6+0x00000002062f)
SUMMARY: ThreadSanitizer: data race /var/tmp/t.cc:32 in main
==================
More information about the Gcc-bugs
mailing list