Subject: kern/31917: sadata_upcall_free panics with "putting with none out"
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <mlelstv@serpens.de>
List: netbsd-bugs
Date: 10/26/2005 07:18:00
>Number: 31917
>Category: kern
>Synopsis: sadata_upcall_free panics with "putting with none out"
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Oct 26 07:18:00 +0000 2005
>Originator: Michael van Elst
>Release: NetBSD 3.0_BETA
>Organization:
--
Michael van Elst
Internet: mlelstv@serpens.de
"A potential Snark may lurk in every tree."
>Environment:
System: NetBSD pepew 3.0_BETA NetBSD 3.0_BETA (PEPEW) #6: Sat Oct 22 19:45:05 CEST 2005 src@pepew:/usr/obj/usr/src/sys/arch/i386/compile/PEPEW i386
Architecture: i386
Machine: i386
>Description:
Sometimes but not always NetBSD 3.0_BETA panics when shutting down. The
panic message says:
pool saupcpl putting with none out
panic: pool_put
The trace shows the following functions on the stack:
pool_do_put
pool_put
sadata_upcall_free
sa_switchcall
The panic occured only since about a week, the bug was possibly
introduced by a pullup on 2005-10-21:
avoid calling into the pool code while holding sched_lock since both
pool_get() and pool_put() can call wakeup(). instead, allocate
the struct sadata_upcall before taking sched_lock in mi_switch()
and free it after releasing sched_lock. clean up some modularity
warts by adding a callback to struct sadata_upcall for freeing
sa_arg.
>How-To-Repeat:
shutdown a NetBSD 3.0_BETA system.
>Fix:
>Unformatted: