Synchronization problem - how could i interpret the stack backtrace?
Hi everybody,
I've written a module for filtering TCP and UDP packets, called ipdriver, and i have a problem regarding synchronization. While inserting, using and removing the module it works fine, i get no deadlock, but the following message is displayed : inconsistent {softirq-on-W} -> {in-softirq-W} usage. swapper/0 [HC0[0]:SC1[1]:HE0:SE0] takes: (old_style_rw_init#2){-+--}, at: [<c8840039>] fin_timeout_handler+0x19/0x50 [ipdriver] {softirq-on-W} state was registered at: [<c0137bec>] __lock_acquire+0x69c/0x1080 [<c0138642>] lock_acquire+0x72/0xa0 [<c032aa66>] _write_lock+0x36/0x50 [<c8840654>] nf_outhook_fn+0xc4/0x310 [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: 892387 hardirqs last enabled at (892386): [<c032b0e2>] _spin_unlock_irq+0x22/0x60 hardirqs last disabled at (892387): [<c032ad99>] _write_lock_irqsave+0x29/0x70 softirqs last enabled at (892372): [<c011c0e1>] __do_softirq+0xb1/0xd0 softirqs last disabled at (892383): [<c0104cdf>] do_softirq+0xaf/0x110 other info that might help us debug this: no locks held by swapper/0. stack backtrace: Pid: 0, comm: swapper 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 [<c0136c39>] mark_lock+0x449/0x620 [<c0137b94>] __lock_acquire+0x644/0x1080 [<c0138642>] lock_acquire+0x72/0xa0 [<c032adc6>] _write_lock_irqsave+0x56/0x70 [<c8840039>] fin_timeout_handler+0x19/0x50 [ipdriver] [<c011f8d9>] run_timer_softirq+0x119/0x180 [<c011c092>] __do_softirq+0x62/0xd0 [<c0104cdf>] do_softirq+0xaf/0x110 ======================= How could i interpret it? Thank you in advance :) |
You probably don't unlock something related to softirq. Reviewing the code will be probably the best method to use. Simply re-read the code and make sure you always unlock when you lock.
|
All times are GMT -5. The time now is 02:35 AM. |