public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ada/64484] New: TSAN reports lock-order-inversion in c940006, c940011 and c940012
@ 2015-01-03 20:47 bernd.edlinger at hotmail dot de
  2015-01-04 10:10 ` [Bug ada/64484] " ebotcazou at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2015-01-03 20:47 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 64484
           Summary: TSAN reports lock-order-inversion in c940006, c940011
                    and c940012
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernd.edlinger at hotmail dot de

Hi,

with my TSAN Ada patch I see a lock-order-inversion in three test cases:

ed@w-ed:~/gnu/gcc-test$ TSAN_OPTIONS=second_deadlock_stack=1 ./c940006 

,.,. C940006 ACATS 2.5 15-01-03 21:44:18
---- C940006 Check external calls of protected functions and procedures.
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=21031)
  Cycle in lock order graph: M14 (0x7fff21661758) => M13 (0x7fff216616e0) =>
M14

  Mutex M13 acquired here while holding mutex M14 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940006+0x00000040ba07)
    #2 c940006__B_1__ramp_32__set_local_overloadN.5152 <null>
(c940006+0x00000040a5ff)
    #3 c940006__B_1__ramp_32__set_local_overloadP.5156 <null>
(c940006+0x00000040a6e8)
    #4 _ada_c940006 /home/ed/gnu/gcc-test/c940006.adb:209
(c940006+0x0000004098b6)
    #5 main /home/ed/gnu/gcc-test/b~c940006.adb:248 (c940006+0x000000403fac)

  Mutex M14 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940006+0x00000040ba07)
    #2 _ada_c940006 /home/ed/gnu/gcc-test/c940006.adb:209
(c940006+0x0000004098b6)
    #3 main /home/ed/gnu/gcc-test/b~c940006.adb:248 (c940006+0x000000403fac)

  Mutex M14 acquired here while holding mutex M13 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__read_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:407 (c940006+0x00000040ba67)
    #2 c940006__B_1__ramp_31__downstream_rampsN.5133 <null>
(c940006+0x00000040a20d)
    #3 c940006__B_1__ramp_31__downstream_rampsP.5136 <null>
(c940006+0x00000040a2e9)
    #4 _ada_c940006 /home/ed/gnu/gcc-test/c940006.adb:211
(c940006+0x0000004098cf)
    #5 main /home/ed/gnu/gcc-test/b~c940006.adb:248 (c940006+0x000000403fac)

  Mutex M13 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940006+0x00000040ba07)
    #2 _ada_c940006 /home/ed/gnu/gcc-test/c940006.adb:211
(c940006+0x0000004098cf)
    #3 main /home/ed/gnu/gcc-test/b~c940006.adb:248 (c940006+0x000000403fac)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock)
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363
system__task_primitives__operations__write_lock
==================
==== C940006 PASSED ============================.
ThreadSanitizer: reported 1 warnings
ed@w-ed:~/gnu/gcc-test$ 
ed@w-ed:~/gnu/gcc-test$ TSAN_OPTIONS=second_deadlock_stack=1 ./c940011

,.,. C940011 ACATS 2.5 15-01-03 21:45:26
---- C940011 Protected Objects created by allocators: external calls via
                access types.
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=7832)
  Cycle in lock order graph: M15 (0x7d200000bec0) => M14 (0x7d200000bf40) =>
M15

  Mutex M14 acquired here while holding mutex M15 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940011+0x00000040b4d7)
    #2 c940011__ramp__set_local_overloadN.5119 <null> (c940011+0x000000409c55)
    #3 c940011__ramp__set_local_overloadP.5123 <null> (c940011+0x000000409d3f)
    #4 _ada_c940011 /home/ed/gnu/gcc-test/c940011.adb:165
(c940011+0x00000040998d)
    #5 main /home/ed/gnu/gcc-test/b~c940011.adb:248 (c940011+0x000000403fac)

  Mutex M15 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940011+0x00000040b4d7)
    #2 _ada_c940011 /home/ed/gnu/gcc-test/c940011.adb:165
(c940011+0x00000040998d)
    #3 main /home/ed/gnu/gcc-test/b~c940011.adb:248 (c940011+0x000000403fac)

  Mutex M15 acquired here while holding mutex M14 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__read_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:407 (c940011+0x00000040b537)
    #2 c940011__ramp__next_ramp_overloadN.5138 <null> (c940011+0x00000040a0de)
    #3 c940011__ramp__next_ramp_overloadP.5141 <null> (c940011+0x00000040a1be)
    #4 _ada_c940011 /home/ed/gnu/gcc-test/c940011.adb:169
(c940011+0x0000004099dd)
    #5 main /home/ed/gnu/gcc-test/b~c940011.adb:248 (c940011+0x000000403fac)

  Mutex M14 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__read_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:407 (c940011+0x00000040b537)
    #2 _ada_c940011 /home/ed/gnu/gcc-test/c940011.adb:169
(c940011+0x0000004099dd)
    #3 main /home/ed/gnu/gcc-test/b~c940011.adb:248 (c940011+0x000000403fac)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock)
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363
system__task_primitives__operations__write_lock
==================
==== C940011 PASSED ============================.
ThreadSanitizer: reported 1 warnings
ed@w-ed:~/gnu/gcc-test$ 
ed@w-ed:~/gnu/gcc-test$ TSAN_OPTIONS=second_deadlock_stack=1 ./c940012

,.,. C940012 ACATS 2.5 15-01-03 21:46:44
---- C940012 Check that a protected object can have discriminants.
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=26419)
  Cycle in lock order graph: M15 (0x7d200000bec0) => M14 (0x7d200000bf40) =>
M15

  Mutex M14 acquired here while holding mutex M15 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940012+0x00000040b7a7)
    #2 c940012__ramp__set_local_overloadN.5206 <null> (c940012+0x000000409f14)
    #3 c940012__ramp__set_local_overloadP.5210 <null> (c940012+0x000000409ffe)
    #4 _ada_c940012 /home/ed/gnu/gcc-test/c940012.adb:163
(c940012+0x000000409baf)
    #5 main /home/ed/gnu/gcc-test/b~c940012.adb:248 (c940012+0x000000403fac)

  Mutex M15 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__write_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363 (c940012+0x00000040b7a7)
    #2 _ada_c940012 /home/ed/gnu/gcc-test/c940012.adb:163
(c940012+0x000000409baf)
    #3 main /home/ed/gnu/gcc-test/b~c940012.adb:248 (c940012+0x000000403fac)

  Mutex M15 acquired here while holding mutex M14 in main thread:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__read_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:407 (c940012+0x00000040b807)
    #2 c940012__ramp__next_ramp_overloadN.5199 <null> (c940012+0x00000040a3a4)
    #3 c940012__ramp__next_ramp_overloadP.5202 <null> (c940012+0x00000040a484)
    #4 _ada_c940012 /home/ed/gnu/gcc-test/c940012.adb:167
(c940012+0x000000409c0e)
    #5 main /home/ed/gnu/gcc-test/b~c940012.adb:248 (c940012+0x000000403fac)

  Mutex M14 previously acquired by the same thread here:
    #0 pthread_mutex_lock
../../../../gcc-trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2988
(libtsan.so.0+0x000000035456)
    #1 system__task_primitives__operations__read_lock
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:407 (c940012+0x00000040b807)
    #2 _ada_c940012 /home/ed/gnu/gcc-test/c940012.adb:167
(c940012+0x000000409c0e)
    #3 main /home/ed/gnu/gcc-test/b~c940012.adb:248 (c940012+0x000000403fac)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock)
/home/ed/gnu/gcc-build/gcc/ada/rts/s-taprop.adb:363
system__task_primitives__operations__write_lock
==================
==== C940012 PASSED ============================.
ThreadSanitizer: reported 1 warnings
ed@w-ed:~/gnu/gcc-test$


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug ada/64484] TSAN reports lock-order-inversion in c940006, c940011 and c940012
  2015-01-03 20:47 [Bug ada/64484] New: TSAN reports lock-order-inversion in c940006, c940011 and c940012 bernd.edlinger at hotmail dot de
@ 2015-01-04 10:10 ` ebotcazou at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-01-04 10:10 UTC (permalink / raw)
  To: gcc-bugs

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

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-01-04
                 CC|                            |ebotcazou at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Interesting, this would need to be investigated I guess.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-01-04 10:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-03 20:47 [Bug ada/64484] New: TSAN reports lock-order-inversion in c940006, c940011 and c940012 bernd.edlinger at hotmail dot de
2015-01-04 10:10 ` [Bug ada/64484] " ebotcazou at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).