[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/48733: deadlock in if_output() with interrupt on KERNEL_LOCK
>Synopsis: deadlock in if_output() with interrupt on KERNEL_LOCK
>Arrival-Date: Fri Apr 11 14:40:00 +0000 2014
>Originator: Wolfgang Stukenbrock
>Release: NetBSD 6.1 - MAIN
Dr. Nagler & Company GmbH
System: NetBSD e013 6.1 NetBSD 6.1 (NSW-E013) #64: Tue Oct 22 11:03:30 CEST
Problem located in /src/sys/netinet/ip_output.c.
Since file revision 1.208 the Kernel-Lock is locked prior calling
on the interface.
Now - at least the wm-driver - will call splnet() and splx() inside the
If any interrupt occurs in between splnet() and splx(), the interrupt
is delayed and
is processes in splx() when the level is released again.
If such an interrupt is e.g. not MP-SAFE, the call stup in
used to call the interrupt routine and that one will lock the
So we try to lock it again here -> dead-lock.
Our system runs fine with 4 8257x interfaces, but after adding 2
interfaces, the system lock-up after a short time. Don't ask me, why
call takes "to long" with theese two additonal interfaces, but it is
I've analysed this several times with DDB. Most times I've seen an
that dead-lock the system.
Run a lot of trafic over wm-interfaces and do shomething e.g. on USB at
time. It is just a question of time till system-dead-lock.
Fist guess: revert change done from 1.207 to 1.208.
But I've no idea about side effects.
Main Index |
Thread Index |