Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NetBSD-6-0 i386 PAE of Nov 18th hangs



On Fri, Nov 30, 2012 at 04:35:18PM -0600, Cherry G. Mathew wrote:
> On 25 November 2012 09:01, S.P.Zeidler <spz%serpens.de@localhost> wrote:
> > Hi,
> >
> > there's a NetBSD-6-0 i386 PAE build of Nov 18th source that should
> > do pbulk pkgsrc builds, but has a tendency to hang after a while.
> >
> > Doing the 'many +' from Xen console during a stuck state gives:
> >
> >  fatal breakpoint trap in supervisor mode
> >  trap type 1 code 0 eip c011c4d4 cs 9 eflags 282 cr2 bb78727c ilevel 6
> >  Stopped in pid 0.7 (system) at  netbsd:breakpoint+0x4:  popl    %ebp
> >  breakpoint(0,c2c35cc0,da384f7c,c01cbb5b,0,0,da384f9c,2a,1,2b) at 
> > netbsd:breakpoint+0x4
> >  
> > xencons_tty_input(c2b993c0,c074902a,1,c2c3a000,1,0,da384fcc,6,c046ee00,da384fe8)
> >  at netbsd:xencons_tty_input+0xb8
> >  
> > xencons_handler(c2b993c0,0,0,0,da527bb0,c2b9e0c0,c3467000,c0101230,c2b9e0c0,da527bcc)
> >  at netbsd:xencons_handler+0x78
> >  
> > intr_biglock_wrapper(c2b9e0c0,da527bcc,c2c2c2c2,c2c2c2c2,c2c2c2c2,c2c2c2c2,c2c2c2c2,c2c2c2c2,c2c2c2c2,c2c2c2c2)
> >  at netbsd:intr_biglock_wrapper+0x1f
> >  --- switch to interrupt stack ---
> >  Xresume_xenev6() at netbsd:Xresume_xenev6+0x40
> >  --- interrupt ---
> >  Xspllower(0,c2c48000,0,c2b80011,c0758880,c2c48000,da527c9c,0,5c10,0) at 
> > netbsd:Xspllower+0xe
> >  
> > mi_switch(c2c3a000,3,1,c2c3a000,c2c3a070,c03440f0,da527cac,0,c03440f0,c2c3a000)
> >  at netbsd:mi_switch+0x1eb
> >  
> > sleepq_block(0,0,c0338ca0,c034d770,0,c2c48000,c2c37d40,c2c36d80,c011c356,9) 
> > at netbsd:sleepq_block+0xad
> >  
> > cv_wait(c03440f0,c0354180,c2c3a000,c046f9e0,c2c3a000,da527d28,0,c03440f0,c2c2c2c2,da527da0)
> >  at netbsd:cv_wait+0xb1
> >  xc_thread(c2c3a000,757000,c0498200,0,c010006d,0,0,0,0,0) at 
> > netbsd:xc_thread+0xb9
> 
> ....
> 
> I have a suspicion this may be priority inversion via running
> spllower() at IPL_HIGH *always* in the event path. I'd fixed it in
> -current, are you able to test -current under similar circumstances ?

I've just debugged this, and it looks like it's the pagedaemon which is
spinning. So far I found that uvm_pageout() would spin because
uvm_km_va_starved_p() always return true, because kmem_arena is almost
full. decerasing drastically kern.maxvnodes stopped the pagedaemon
spinning. xc_thread() appears in the stack trace because
uvm_pageout() would do xcalls via pool_drain_end() in its loop.

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index