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.
Note:
See TracTickets
for help on using tickets.