'make -j16 universe' gives SIReset

Marius Strobl marius at alchemy.franken.de
Wed Jul 6 10:39:16 UTC 2011


On Wed, Jul 06, 2011 at 02:26:34PM +1000, Peter Jeremy wrote:
> On 2011-Jul-06 03:01:26 +0800, Marius Strobl <marius at alchemy.franken.de> wrote:
> >Peter, could you please test again with at least r223795 and the below
> >patch but no additional change to pmap.c?
> 
> I've updated my V890 to r223802 with no patches other than the
> vm_page.c one you posted and started running pho@'s stress test with
> INCARNATIONS=150.
> 
> After about 1? hr, it reported: "witness_lock_list_get: witness exhausted"
> I presume I need to increase LOCK_CHILDCOUNT to avoid this.  sysctl shows:
> debug.witness.sleep_cnt: 132
> debug.witness.spin_cnt: 0
> debug.witness.free_cnt: 751
> debug.witness.badstacks: Witness not running
> debug.witness.fullgraph: Witness not running
> debug.witness.skipspin: 1
> debug.witness.trace: 1
> debug.witness.kdb: 0
> debug.witness.watch: -1
> 
> After about 2? hrs, 'thr1' stopped making progress: It has 77 zombies
> and a further 5 processes stuck in "urdlck" (no other processes appear
> stuck).  "procstat -k" shows:
>  8732 100898 thr1             -                mi_switch sleepq_switch sleepq_catch_signals sleepq_wait_sig _sleep kern_wait wait4 syscallenter syscall 
>  8881 195433 thr1             -                mi_switch sleepq_switch sleepq_catch_signals sleepq_wait_sig _sleep do_rw_rdlock __umtx_op_rw_rdlock _umtx_op syscallenter syscall 
> 
> And DDB for one of the stuck processes shows
> db> trace 8881
> Tracing pid 8881 tid 195433 td 0xfffff8b0a2e72880
> mi_switch() at mi_switch+0x2a8
> sleepq_switch() at sleepq_switch+0x1cc
> sleepq_catch_signals() at sleepq_catch_signals+0x130
> sleepq_wait_sig() at sleepq_wait_sig+0x8
> _sleep() at _sleep+0x41c
> do_rw_rdlock() at do_rw_rdlock+0x7e4
> __umtx_op_rw_rdlock() at __umtx_op_rw_rdlock+0x1c
> _umtx_op() at _umtx_op+0x3c
> syscallenter() at syscallenter+0x270
> syscall() at syscall+0x74
> -- syscall (454, FreeBSD ELF64, _umtx_op) %o7=0x40479574 --
> userland() at 0x4047957c
> user trace: trap %o7=0x40479574
> pc 0x4047957c, sp 0x7fdffffc561
> pc 0x7fdffffd1c0, sp 0x40365a10
> pc 0x90000000000125a, sp 0xac00002d11220000

What line does mi_switch+0x2a8 translate to?

> 
> Unfortunately, I'm somewhat at a loss as to how to investigate this
> further.  In particular, DDB doesn't show the lock details and kgdb
> doesn't work.
> 
> What is involved in getting kgdb to work on sparc64?
> 

I don't know. kgdb never really worked for me on any architecture so
I didn't care about it and continued to use gdb53. At least for x86
kgdb apparently has been fixed since then though. The following is a
sparc64 package of gdb53, which still has the '-k' option:
http://people.freebsd.org/~marius/gdb-5.3_1%2c1.tbz

Marius



More information about the freebsd-sparc64 mailing list