Changes between Initial Version and Version 1 of Ticket #14646
- Timestamp:
- Oct 20, 2018, 7:56:03 AM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #14646 – Description
initial v1 1 2 3 1 While poweroff with networking is active (iprowifi4965) i often got KDL. 4 2 Here is the trace with DEBUG on: 5 3 6 ==== 4 {{{ 7 5 wlan_control: 9234, 16 8 6 ->iwn_rx_done begin … … 50 48 11 ffffffff9104afb0 (+ 32) ffffffff800858f6 <kernel_x86_64> common_thread_entry(void*) + 0x37 51 49 12 ffffffff9104afd0 (+1861963824) ffffffff9104afe0 52 ==== 50 }}} 53 51 52 The {{{iwn_tx_done + 0x1c6}}} is KASSERT line in if_iwn.c (iwn_tx_done()): 54 53 55 The [iwn_tx_done + 0x1c6] is KASSERT line in if_iwn.c (iwn_tx_done()): 54 {{{KASSERT(data->ni != NULL, ("no node"));}}} 56 55 57 KASSERT(data->ni != NULL, ("no node")); 56 So, the problem is in race between {{{iwn_hw_stop}}} and {{{iwn_intr (->iwn_notify_intr-> ... iwn_tx_done)}}} 58 57 59 So, the problem is in race beetwin iwn_hw_stop and iwn_intr (->iwn_notify_intr-> ... iwn_tx_done) 60 61 The race is possible due the fact, that iwn_intr called from thread (freebsd compat glue) and iwn_hw_stop can be 62 called while iwn_intr is in way and not grab IWN_LOCK yet. 58 The race is possible due the fact, that {{{iwn_intr}}} called from thread (freebsd compat glue) and {{{iwn_hw_stop}}} can be 59 called while {{{iwn_intr}}} is in way and not grab {{{IWN_LOCK}}} yet. 63 60 64 61 So, the problem is likely Haiku only (not bug in freebsd code).