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

--- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
For reference, GCC 15 prints the diagnostic textually like this when generating
that sarif file (via a test plugin):

diagnostic-test-paths-multithreaded-inline-events.c:17:3: warning: deadlock due
to inconsistent lock acquisition order
   17 |   acquire_lock_a (); /* { dg-warning "deadlock due to inconsistent lock
acquisition order" } */
      |   ^~~~~~~~~~~~~~~~~
Thread: 'Thread 1'
  'foo': event 1
    |
    |    9 | {
    |      | ^
    |      | |
    |      | (1) entering 'foo'
    |
    +--> 'foo': event 2
           |
           |   10 |   acquire_lock_a ();
           |      |   ^~~~~~~~~~~~~~~~~
           |      |   |
           |      |   (2) lock a is now held by thread 1
           |

Thread: 'Thread 2'
  'bar': event 3
    |
    |   15 | {
    |      | ^
    |      | |
    |      | (3) entering 'bar'
    |
    +--> 'bar': event 4
           |
           |   16 |   acquire_lock_b ();
           |      |   ^~~~~~~~~~~~~~~~~
           |      |   |
           |      |   (4) lock b is now held by thread 2
           |

Thread: 'Thread 1'
         'foo': event 5
           |
           |   11 |   acquire_lock_b ();
           |      |   ^~~~~~~~~~~~~~~~~
           |      |   |
           |      |   (5) deadlocked due to waiting for lock b in thread 1
(acquired by thread 2 at (4))...
           |

Thread: 'Thread 2'
         'bar': event 6
           |
           |   17 |   acquire_lock_a (); /* { dg-warning "deadlock due to
inconsistent lock acquisition order" } */
           |      |   ^~~~~~~~~~~~~~~~~
           |      |   |
           |      |   (6) ...whilst waiting for lock a in thread 2 (acquired by
thread 1 at (2))
           |

Reply via email to