On Fri, 27 May 2005, Otto Moerbeek wrote:
> > Ik can reproduce this on my G3 iBook, but not on my Mac mini.
> >
> > It turns out that x becomes suddenly 0 after some iterations of this loop:
> >
> > for (i = 1; i <= reps || infinity; i++) {
> > double v;
> > y = arc4random() / ((double)0xffffffff + 1);
> > v = y * x + begin;
> > if (putdata(v, reps == i && !infinity))
> > errx(1, "range error in conversion: %f",
> > v);
> > }
> >
> > Making x a global var makes the problem disappear. My guess is that we are
> > looking at either a code generation problem or a fp context save/restore
> > problem.
> >
> > Will dig into this a bit deeper later.
Well, after some really deep digging, this commit by Dale Rahn fixes
the problem.
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/arch/powerpc/powerpc/trap.c.diff?r1=1.67&r2=1.68&f=h
Thanks for the report.
-Otto