Date: Tue, 20 Dec 2005 01:29:52 -0800 (PST) From: Luke Dean <LukeD@pobox.com> To: freebsd-questions@freebsd.org Subject: Possible solution to lockups on FreeBSD 6? Message-ID: <20051220010208.D19327@border.crystalsphere.multiverse>
next in thread | raw e-mail | index | archive | help
In my ongoing quest to figure out why my machine keeps locking up since I upgraded from 5.4 to 6.0, I came across this interesting passage in man (5) pf.conf: BUGS Due to a lock order reversal (LOR) with the socket layer, the use of the group and user filter parameter in conjuction with a Giant-free netstack can result in a deadlock. If you have to use group or user you must set debug.mpsafenet to ``0'' from the loader(8), for the moment. This work- around will still produce the LOR, but Giant will protect from the dead- lock. In the release notes for FreeBSD 6, I found: Fine-grained locking has been applied to many of the data structures in the IPX/SPX protocol stack. While not fully MPSAFE at this point, it is generally safe to use IPX/SPX without the Giant lock (in other words, the debug.mpsafenet sysctl variable may be set to 1). While I don't fully understand what this passage is talking about, I take it to mean that the default value of debug.mpsafenet is now 1, and that this is a new feature of FreeBSD version 6. I use pf. I use the user filter parameter on some oft-evaluated rules. I discovered that my debug.mpsafenet is indeed "1" . My system is deadlocking occasionally under 6 where it never did so under 5.4. I think I'm going to attempt to set debug.mpsafenet to "0" in my loader.conf and see how many days I can go without a lockup this time. I've seen several threads lately from people having lockup troubles after upgrading to version 6, and at least one of them mentioned pf specifically, so I bet some of the rest of you may want to try this too.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051220010208.D19327>