On Thu, Sep 25, 2008 at 08:34:11PM +0200, Manuel Bouyer wrote:
> On Thu, Sep 25, 2008 at 11:26:13AM -0700, Bill Stouder-Studenmund wrote:
> > On Thu, Sep 25, 2008 at 10:57:57AM -0700, Bill Stouder-Studenmund wrote:
> > > On Thu, Sep 25, 2008 at 04:58:46PM +0200, Manuel Bouyer wrote:
> > > > # /usr/sbin/named -v
> > > > BIND 9.3.0
> > > > # /usr/sbin/named
> > > > # uvm_fault(0xc5877b60, 0, 1) -> 0xe
> > > > fatal page fault in supervisor mode
> > > > trap type 6 code 0 eip c02d60df cs 9 eflags 10246 cr2 0 ilevel 7
> > > > kernel: supervisor trap page fault, code=0
> > > > Stopped in pid 12.2 (named) at netbsd:sa_getcachelwp+0x2f: movl
> > > > 0xc4(%ebx),%edx
> > > > db> tr
> > > > sa_getcachelwp(c5872588,c66e1f80,c65e3b5c,c02cb957,c66e1f82,0,c5872588,c03a4fa7,c66e1f80,0)
> > > > at netbsd:sa_getcachelwp+0x2f
> > >
> > > Ok, I'm confused. How was the kernel compiled? I'm guessing not
> > > DIAGNOSTIC... There are asserts that should make it clear as to what may
> > > be wrong here.
> > >
> > > > sa_switch(c6611c40,c0427797,1,c5864fa8,c04adcfc,c6611c40,c65e3bdc,c02b5ebf,0,0)
> > > > a t netbsd:sa_switch+0x2a6
> > > > sleepq_block(0,0,c0427797,c0449770,c58725ac,0,c65e3bfc,0,c04add74,c5872588)
> > > > at netbsd:sleepq_block+0x138
> > > > cv_wait(c58725ac,c5864f3c,0,c03a4fa7,c6611c40,ffffffff,0,c03a4fa7,c6611dd0,c6611c40)
> > > > at netbsd:cv_wait+0xef
> > > > sigexit(c6611c40,b,b,0,c06f6f90,0,c6611dc0,0,0,0) at
> > > > netbsd:sigexit+0x17e
> > >
> > > Looks like there's an issue here too. This is a silly time to be firing
> > > off a "BLOCKED" upcall.
> >
> > Yes, it is a silly time. Turns out that this code:
> >
> > if (p->p_flag & P_WEXIT) {
> > mi_switch(l, NULL);
> > return;
> > }
> >
> > didn't get translated to -current right. Should be fixed in kern_sa.c rev
> > 1.91.2.41.
sorry, 1.91.2.42.
> Sorry, I still get the panic:
> trap type 6 code 0 eip c02d60df cs 9 eflags 10246 cr2 0 ilevel 7
> kernel: supervisor trap page fault, code=0
> Stopped in pid 6.2 (named) at netbsd:sa_getcachelwp+0x2f: movl
> 0xc4(%ebx),%edx
> db> tr
> sa_getcachelwp(c5872760,c6618f80,c5c9fb5c,c02cb957,c6618f82,0,c5872760,c03a4fa7,c6618f80,0)
> at netbsd:sa_getcachelwp+0x2f
> sa_switch(c586a280,c0427797,1,c5864fa8,c04add14,c586a280,c5c9fbdc,c02b5ebf,0,0)
> at netbsd:sa_switch+0x298
> sleepq_block(0,0,c0427797,c0449770,c5872784,0,c5865e84,0,c04adcb4,c5872760)
> at netbsd:sleepq_block+0x138
> cv_wait(c5872784,c5864f48,0,c03a4fa7,c586a280,ffffffff,0,c03a4fa7,c586a410,c586a280)
> at netbsd:cv_wait+0xef
> sigexit(c586a280,b,b,0,c06f7f90,0,c586a400,0,0,0) at netbsd:sigexit+0x17e
> postsig(b,c5c9fd00,c5c9fcac,c0399293,c661200c,b,c6617fa0,c5872760,c586a280,c5c9fd30)
> at netbsd:postsig+0xfd
> lwp_userret(c586a280,c5c9fd00,c5c9fda0,2,fffffffc,1,c5c9fd2c,b93ffcd8,4,0) at
> netbsd:lwp_userret+0x168
> trap() at netbsd:trap+0x4c8
>
> lavardin:/home/bouyer>ident netbsd-XENU |grep kern_sa.c
> $NetBSD: kern_sa.c,v 1.91.2.42 2008/09/25 18:24:20 wrstuden Exp $
Ok. We now set PS_WEXIT a lot later than we used to. Before, we'd set
P_WEXIT (the old value for this flag) in sigexit(). Now we don't.
Also, the thread that decides to core the whole process will not have
LW_WEXIT set on itself. So we have to look at PS_WCORE.
Please try rev 1.91.2.43.
If this doesn't work, I'll need to try this tonight.
Take care,
Bill
Attachment:
pgp1yxC89oUza.pgp
Description: PGP signature