Subject: Re: kern/32162: [netbsd-3.0] kernel dead-lock in MP system
To: Andreas Wrede <andreas@planix.com>
From: Chuck Silvers <chuq@chuq.com>
List: netbsd-bugs
Date: 01/13/2006 07:37:02
CPU 0 got a page-fault in pmap_activate(), and it's trying to print
something on the console (before panicing).  the pty code is trying to
call wakeup, which needs the sched_lock that is already held by the
context-switch code that is calling pmap_activate().

CPU 1 is waiting for sched_lock, which is held by CPU 0.

looks like more memory corruption.

-Chuck


On Wed, Jan 11, 2006 at 10:07:55PM -0500, Andreas Wrede wrote:
> Any idea what this is and what to do next?
> 
> cpu0: spinout
> Stopped in pid 18.1 (aiodoned) at       netbsd:cpu_Debugger 
> +0x4:        leave
> db{0}> bt
> cpu_Debugger(c067db95,0,c2bf7cdc,cd262b7c,c0713354) at  
> netbsd:cpu_Debugger+0x4
> __cpu_simple_lock(c0713a1c,0,c2993df4,c36b6100,cd262b7c) at  
> netbsd:__cpu_simple_lock+0x93
> printf_nolog(c06769f5,cd262b7c,c069ace4,cd262c30,a) at  
> netbsd:printf_nolog+0x32
> lock_printf(c069ace4,a080101,cd262c54,c033d966,c3874200) at  
> netbsd:lock_printf+0x4c
> _simple_lock(c0713354,c06cb1c0,440,c,c2b360c0) at netbsd:_simple_lock 
> +0x235
> selwakeup(c2b360c8,989680,0,66,cc2016c0) at netbsd:selwakeup+0x99
> ptsstart(cc2016c0,0,c06cb840,7,cc2016c0) at netbsd:ptsstart+0x85
> ttstart(cc2016c0,cc2016c0,9ac,1,0) at netbsd:ttstart+0x1e
> tputchar(66,7,cc2016c0,cc2016c0,cbfbb024) at netbsd:tputchar+0x79
> putchar(66,5,0,6,0) at netbsd:putchar+0x49
> kprintf(c067f495,5,0,0,cd262de0) at netbsd:kprintf+0x5c
> printf(c067f495,c067f385,cd262e60,1,1ebd4) at netbsd:printf+0x46
> trap() at netbsd:trap+0x106
> --- trap (number 6) ---
> pmap_activate(cc20b8c4,cc2101d0,4c,0,c034cbf9) at netbsd:pmap_activate 
> +0x39
> mpidle(cc20b8c4,0,1d9,c0786ff0,c0789608) at netbsd:mpidle+0xcb
> ltsleep(c0789600,204,c067744e,0,c0789608) at netbsd:ltsleep+0x4d0
> uvm_aiodone_daemon(cc20b8c4,842000,84b000,0,c0100321) at  
> netbsd:uvm_aiodone_daemon+0x15f


> db{0}> machine cpu 1
> using CPU 1
> db{0}> bt
> __cpu_simple_lock(c0713354,c035241b,c07620a8,297,10b) at  
> netbsd:__cpu_simple_lock+0x6f
> _simple_lock(c0713354,c06c8d00,47b,c,c21a303c) at netbsd:_simple_lock 
> +0x7a
> schedclock(cf1859e8,c2266a00,c355a788,c21c4838,ce453c78) at  
> netbsd:schedclock+0x58
> statclock(ce453cbc,c01f7f52,c21c4800,80,c066ea25) at netbsd:statclock 
> +0xeb
> hardclock(ce453cbc,3,c03902b8,ce453cb4,0) at netbsd:hardclock+0x5f3
> lapic_clockintr(0,0,c0330010,30,1310010) at netbsd:lapic_clockintr+0x48
> Xresume_lapic_ltimer() at netbsd:Xresume_lapic_ltimer+0x1b
> --- interrupt ---
> Xspllower(0,c06c6880,390,206,0) at netbsd:Xspllower+0xe
> _lockmgr(c0764180,400006,0,c06d69c0,da4) at netbsd:_lockmgr+0x250
> pmap_enter(cfcabc28,81fe000,37762000,3,22) at netbsd:pmap_enter+0x4d6
> uvm_fault(ce8ec2b4,81fe000,0,2,2) at netbsd:uvm_fault+0x976
> trap() at netbsd:trap+0x36f
> --- trap (number 6) ---
> 0xbdb685fc: