https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113005

Xi Ruoyao <xry111 at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |xry111 at gcc dot gnu.org
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=55561

--- Comment #18 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
I get warnings like below after building both libgomp and the test program with
tsan (following PR55561 comment 15):

WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
(pid=867077)
  Cycle in lock order graph: M0 (0x7ffff0061550) => M1 (0x7fffebb270e0) => M0

  Mutex M1 acquired here while holding mutex M0 in thread T13:
    #0 pthread_mutex_lock
../../../../gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:1371
(libtsan.so.2+0x5b668)
    #1 __gthread_mutex_lock ../libgcc/gthr-default.h:795
(libgfortran.so.5+0x17376c)
    #2 insert_unit ../../../gcc/libgfortran/io/unit.c:250
(libgfortran.so.5+0x17376c)
    #3 gomp_thread_start ../../../gcc/libgomp/team.c:129 (libgomp.so.1+0x325f8)

  Mutex M0 previously acquired by the same thread here:
    #0 pthread_rwlock_wrlock
../../../../gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:1552
(libtsan.so.2+0x5a204)
    #1 __gthread_rwlock_wrlock ../libgcc/gthr-default.h:957
(libgfortran.so.5+0x17386c)
    #2 get_gfc_unit ../../../gcc/libgfortran/io/unit.c:379
(libgfortran.so.5+0x17386c)
    #3 gomp_thread_start ../../../gcc/libgomp/team.c:129 (libgomp.so.1+0x325f8)

  Mutex M0 acquired here while holding mutex M1 in thread T13:
    #0 pthread_rwlock_wrlock
../../../../gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:1552
(libtsan.so.2+0x5a204)
    #1 __gthread_rwlock_wrlock ../libgcc/gthr-default.h:957
(libgfortran.so.5+0x174564)
    #2 close_unit_1 ../../../gcc/libgfortran/io/unit.c:770
(libgfortran.so.5+0x174564)
    #3 gomp_thread_start ../../../gcc/libgomp/team.c:129 (libgomp.so.1+0x325f8)

  Mutex M1 previously acquired by the same thread here:
    #0 pthread_mutex_trylock
../../../../gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:1384
(libtsan.so.2+0x59a64)
    #1 __gthread_mutex_trylock ../libgcc/gthr-default.h:804
(libgfortran.so.5+0x1739c4)
    #2 get_gfc_unit ../../../gcc/libgfortran/io/unit.c:415
(libgfortran.so.5+0x1739c4)
    #3 gomp_thread_start ../../../gcc/libgomp/team.c:129 (libgomp.so.1+0x325f8)

  Thread T13 (tid=867091, running) created by main thread at:
    #0 pthread_create
../../../../gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:1041
(libtsan.so.2+0x5c10c)
    #1 gomp_team_start ../../../gcc/libgomp/team.c:859 (libgomp.so.1+0x32f30)
    #2 GOMP_parallel ../../../gcc/libgomp/parallel.c:176 (libgomp.so.1+0x20e0c)
    #3 MAIN__
/home/xry111/git-repos/gcc/libgomp/testsuite/libgomp.fortran/rwlock_1.f90:6
(a.out+0x1394)
    #4 main
/home/xry111/git-repos/gcc/libgomp/testsuite/libgomp.fortran/rwlock_1.f90:7
(a.out+0x1414)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock)
../libgcc/gthr-default.h:795 in __gthread_mutex_lock

I'm not sure if the warning is correct or not.

Reply via email to