Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Oct 2002 15:57:06 +0100
From:      "Peter Edwards" <pmedwards@eircom.net>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        current@freebsd.org
Subject:   Re: Floating point problems
Message-ID:  <20021024145830.0D2D543E75@mx1.FreeBSD.org>

next in thread | raw e-mail | index | archive | help
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 <bde@zeta.org.au> 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021024145830.0D2D543E75>