Changes between Initial Version and Version 1 of Ticket #14646


Ignore:
Timestamp:
Oct 20, 2018, 7:56:03 AM (6 years ago)
Author:
diver
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #14646 – Description

    initial v1  
    1 
    2 
    31While poweroff with networking is active (iprowifi4965) i often got KDL.
    42Here is the trace with DEBUG on:
    53
    6 ====
     4{{{
    75wlan_control: 9234, 16
    86->iwn_rx_done begin
     
    504811 ffffffff9104afb0 (+  32) ffffffff800858f6   <kernel_x86_64> common_thread_entry(void*) + 0x37
    514912 ffffffff9104afd0 (+1861963824) ffffffff9104afe0
    52 ====
     50}}}
    5351
     52The {{{iwn_tx_done + 0x1c6}}} is KASSERT line in if_iwn.c (iwn_tx_done()):
    5453
    55 The [iwn_tx_done + 0x1c6] is KASSERT line in if_iwn.c (iwn_tx_done()):
     54       {{{KASSERT(data->ni != NULL, ("no node"));}}}
    5655
    57        KASSERT(data->ni != NULL, ("no node"));
     56So, the problem is in race between {{{iwn_hw_stop}}} and {{{iwn_intr (->iwn_notify_intr-> ... iwn_tx_done)}}}
    5857
    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.
     58The race is possible due the fact, that {{{iwn_intr}}} called from thread (freebsd compat glue) and {{{iwn_hw_stop}}} can be
     59called while {{{iwn_intr}}} is in way and not grab {{{IWN_LOCK}}} yet.
    6360
    6461So, the problem is likely Haiku only (not bug in freebsd code).