Well, that's certainly fixed the problems my test app had. As for X: I was regularly able to hurt X by clicking randomly on the "transfers" window in Opera, and switching between it and other internal frames: symptoms included SEGVs, minute-long hangs, etc. Invoking such rain-dances failed to produce any positive results after about 5 mins., which is 3-4 times longer than its ever been up before under the same stress. I'll report back in about 24 hours either way, but I think that's cured it. -- Peter.
Bruce Evans <[EMAIL PROTECTED]> wrote: > > On Thu, 24 Oct 2002, Peter Edwards wrote: > > > There was some discussion about issues with interactions between the floating > > point context and signal handling in a thread a week or so ago, and a suggestion > > that someone try and get a simple test that would fail. I was surprised how > > easy it was: The following program just spins calculating the value of 6.0 / > > 3.0, and traps SIGINT. > > > > If you run it on -current (as of a few hours ago), 99% of the time, hitting > > ctl-C will cause the program to exit with an error. A 4.5 kernel never causes > > any problems. > > > > I'm pretty sure this is what's causing the stalls and crashes in X. I've taken > > stack traces of crashes, and from "spinning" processes, and I can spot NaNs on > > the stack that shouldn't be there, etc. > > Thanks. This makes the main bug clear. The PCB_NPXINITDONE bit in the > state was not being restored. This was confusing to debug because gdb > doesn't understand this bug so it shows the state that should have been > restored until npxdna() unrestores it consistently. Try this fix. > > %%% > Index: npx.c > =================================================================== > RCS file: /home/ncvs/src/sys/i386/isa/npx.c,v > retrieving revision 1.133 > diff -u -2 -r1.133 npx.c > --- npx.c 20 Oct 2002 17:30:30 -0000 1.133 > +++ npx.c 24 Oct 2002 14:20:33 -0000 > @@ -1004,4 +1007,5 @@ > bcopy(addr, &td->td_pcb->pcb_save, sizeof(*addr)); > } > + curthread->td_pcb->pcb_flags |= PCB_NPXINITDONE; > } > > %%% > > Bruce > > -- Peter Edwards. To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message