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
==================

Reply via email to