Opened 2 days ago

#874 new defect

Incorrect blocking chain printed by fibril deadlock detector

Reported by: Jiri Svoboda Owned by:
Priority: minor Milestone: 0.14.2
Component: helenos/unspecified Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:

Description

I've found that the fibril mutex deadlock detector does not print the correct blocking chain. So I added a new 'deadlock' test to tester that demonstrates this.

 # tester deadlock
Creating fibril
F1: Lock M1
F1: Lock M1
F2: Lock M2
F2: Lock M1
F2: Lock M1
F1: Lock M2
Deadlock detected.
0x0000000070141ce0: 0x00000000701794e3()
0x0000000070141d20: 0x000000007016af44()
0x0000000070141d80: 0x000000007016b2d7()
0x0000000070141d90: 0x0000000000402400()
0x0000000070141dd0: 0x000000000040200e()
0x0000000070141e10: 0x000000007015c54b()
0x0000000070141e20: 0x00000000004083dc()
0x0000000070141e30: 0x000000000040834a()
-- end of stack trace --
Fibril 0x000000007018d3e0 waits for primitive 0x000000000040f460.
Primitive 0x000000000040f460 is owned by fibril 0x000000007018d3e0.
bdsh: Command failed (unexpectedly terminated)
/ # 

I am not sure why some messages are printed twice. Nevertheless the correct blocking chain is M1 → F1 → M2 → F2 → M1. But the detector says the cycle contains just one fibril and one lock.

Change History (0)

Note: See TracTickets for help on using tickets.