[pso] [Tema5][Linux]inconsistent lock state

Codrin Alexandru Grajdeanu grcodal at gmail.com
Mon Apr 7 04:08:57 EEST 2008


Pe site imi apare o problema la stabilirea conexiunii in tema5, totusi
trece toate testele, mentionez ca pe masina mea nu apare aceasta
problema.
Se pare ca atunci cand hookul de iesire vede mesajul de initiere de
conexiune catre outside, si adauga noua regula in lista facand
write_lock pe lockul pt sincronizare, intra si hookul de intrare pt
pachetul primit de la outside (ca raspuns la inceput de conexiune) -
hook care verifica daca pachetul se regaseste in lista facand
read_lock pe lockul pt sincronizare. Eu zic ca am facut bine
sincronizarea, in context proces folosesc read_lock_bh, write_lock_bh,
deci n-ar trb sa interfereze contextul proces cu cel din intreruperi,
iar sincronizarea in softirq ar trebui sa mearga cu read_lock si
write_lock. Am incercat si cu spin_lock normal si acelasi mesaj de
kernel apare.
Orice sugestie e binevenita :D

=================================
[ INFO: inconsistent lock state ]
2.6.24.2 #14
---------------------------------
inconsistent {softirq-on-W} -> {in-softirq-R} usage.
test/2560 [HC0[0]:SC1[1]:HE1:SE0] takes:
 (&fwr_lock){---?}, at: [<c8840434>] hook_func_in+0x64/0x160 [ipdriver]
{softirq-on-W} state was registered at:
  [<c0137bec>] __lock_acquire+0x69c/0x1080
  [<c0138642>] lock_acquire+0x72/0xa0
  [<c032aa66>] _write_lock+0x36/0x50
  [<c8840154>] add_rule+0x74/0xa0 [ipdriver]
  [<c88406af>] hook_func_out+0x17f/0x190 [ipdriver]
  [<c02da665>] nf_iterate+0x65/0x90
  [<c02da70e>] nf_hook_slow+0x7e/0x120
  [<c02e551e>] ip_queue_xmit+0x29e/0x3d0
  [<c02f550c>] tcp_transmit_skb+0x3bc/0x750
  [<c02f813a>] tcp_connect+0x2aa/0x330
  [<c02fb3e0>] tcp_v4_connect+0x370/0x6d0
  [<c0308b1f>] inet_stream_connect+0x1df/0x270
  [<c02ba87d>] sys_connect+0x5d/0x90
  [<c02bbfd4>] sys_socketcall+0x94/0x260
  [<c0102c82>] sysenter_past_esp+0x6b/0xc1
  [<ffffffff>] 0xffffffff
irq event stamp: 2422
hardirqs last  enabled at (2422): [<c0165a4a>] kmem_cache_free+0x9a/0xd0
hardirqs last disabled at (2421): [<c01659df>] kmem_cache_free+0x2f/0xd0
softirqs last  enabled at (2408): [<c02c9037>] dev_queue_xmit+0xd7/0x310
softirqs last disabled at (2409): [<c0104cdf>] do_softirq+0xaf/0x110

other info that might help us debug this:
4 locks held by test/2560:
 #0:  (sk_lock-AF_INET){--..}, at: [<c0308963>] inet_stream_connect+0x23/0x270
 #1:  (rcu_read_lock){..--}, at: [<c02c87a9>] net_rx_action+0x59/0x250
 #2:  (rcu_read_lock){..--}, at: [<c02c6001>] netif_receive_skb+0xf1/0x2e0
 #3:  (rcu_read_lock){..--}, at: [<c02da690>] nf_hook_slow+0x0/0x120

stack backtrace:
Pid: 2560, comm: test Not tainted 2.6.24.2 #14
 [<c0103d3a>] show_trace_log_lvl+0x1a/0x30
 [<c01046e2>] show_trace+0x12/0x20
 [<c0104a4c>] dump_stack+0x6c/0x80
 [<c0135e63>] print_usage_bug+0x153/0x160
 [<c0136dfb>] mark_lock+0x60b/0x620
 [<c0137c08>] __lock_acquire+0x6b8/0x1080
 [<c0138642>] lock_acquire+0x72/0xa0
 [<c032abb6>] _read_lock+0x36/0x50
 [<c8840434>] hook_func_in+0x64/0x160 [ipdriver]
 [<c02da665>] nf_iterate+0x65/0x90
 [<c02da70e>] nf_hook_slow+0x7e/0x120
 [<c02e100c>] ip_local_deliver+0x8c/0xa0
 [<c02e083b>] ip_rcv_finish+0xdb/0x310
 [<c02e0eab>] ip_rcv+0x16b/0x240
 [<c02c613b>] netif_receive_skb+0x22b/0x2e0
 [<c02c8e58>] process_backlog+0x88/0xe0
 [<c02c88d7>] net_rx_action+0x187/0x250
 [<c011c092>] __do_softirq+0x62/0xd0
 [<c0104cdf>] do_softirq+0xaf/0x110
 =======================

PS  Cautand solutii am dat si de un doc interesant despre kernel
locking: http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/


More information about the pso mailing list