Re: panic on boot with fresh current

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Sat, 10 Aug 2013 21:21:09 +0300
On Sat, Aug 10, 2013 at 08:45:47PM +0300, Konstantin Belousov wrote:
> On Sat, Aug 10, 2013 at 08:44:07PM +0300, Konstantin Belousov wrote:
> > On Sat, Aug 10, 2013 at 12:15:35PM -0500, Bryan Drewery wrote:
> > > On 8/10/2013 11:44 AM, Bryan Drewery wrote:
> > > > On 8/10/2013 6:24 AM, Joel Dahl wrote:
> > > >> panic: witness_init: pending locks list is too small, increase
> > > >> WITNESS_PENDLIST
> > > > I also get this. The last stable revision for me was r254150
> > > 
> > > r254150 stable, r254171 panic.
> > > 
> > > backtrace: https://dl.dropboxusercontent.com/u/8732004/r254171-panic.jpg
> > 
> > So could you point to exact commit which causes panic ?
> It is r254167, right ?
> 
So I cannot reproduce it locally.  The problem is that r254167 moved sleepq
initialization before witness is operational, and witness has a backlog
of locks initialized before witness init.  The backlog overflown.

The right fix looks to be just what the panic message told, please try
this:

diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index 3b4d7a2..37e8cf2 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
_at__at_ -135,7 +135,7 _at__at_ __FBSDID("$FreeBSD$");
 #define	WITNESS_COUNT 		1024
 #define	WITNESS_CHILDCOUNT 	(WITNESS_COUNT * 4)
 #define	WITNESS_HASH_SIZE	251	/* Prime, gives load factor < 2 */
-#define	WITNESS_PENDLIST	768
+#define	WITNESS_PENDLIST	1024
 
 /* Allocate 256 KB of stack data space */
 #define	WITNESS_LO_DATA_COUNT	2048

If this does not help, try to increse PENDLIST even more.  But, sleepq
uses 256 elements, which means that my increase should be enough.

Received on Sat Aug 10 2013 - 16:21:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:40 UTC