On Thursday 20 November 2008 04:30:57 pm Paul B. Mahol wrote:
for
serialize
on
kldload/kldstat/kldunload
So this is actually due to a bug in the module code. If you have two modules
like this:
DECLARE_MODULE(foo, SI_SUB_DRIVERS, SI_ORDER_FIRST);
DECLARE_MODULE(bar, SI_SUB_DRIVERS, SI_ORDER_SECOND);
The SI_* constants ensure that foo's module handler is called before bar's
module handler for MOD_LOAD. However, we don't enforce a reverse order (bar
then foo) for MOD_UNLOAD. In fact, the order of MOD_UNLOAD events is random
and has no relation to the SI_* constants. :(
What is happening here is that one of the 'bar' modules in libiconv.ko is
getting unloaded after 'foo' gets unloaded and using a destroyed lock (you
get a panic if you run with INVARIANTS).
--
John Baldwin
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"