Opened 5 days ago
Closed 37 hours ago
#874 closed defect (fixed)
Incorrect blocking chain printed by fibril deadlock detector
Reported by: | Jiri Svoboda | Owned by: | Jiri Svoboda |
---|---|---|---|
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 (2)
comment:1 by , 37 hours ago
Owner: | set to |
---|---|
Status: | new → accepted |
comment:2 by , 37 hours ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Note:
See TracTickets
for help on using tickets.
Fixed in changeset e0e22648f5799cc98671695e153b0b00037daeb9.