On Sat May 25 01:50:51 EDT 2013, lu...@proxima.alt.za wrote:
> I've seen this before, although by now I've seen so many errors crop
> up that I can't recall them all.
> 
> >> === RUN TestErrors-2
> >> template.test 289408: suicide: sys: floating point in note handler 
> >> pc=0x0001e9c7
> >> exit status: 'template.test 289408: sys: floating point in note
> >> handler pc=0x0001e9c7'
> >> FAIL html/template 0.213s
> > 
> > acid: stk()
> > runtime.memmove(to=0x106dd000,fr=0x30887660,n=0x2c)+0x107
> > /usr/glenda/src/go/src/pkg/runtime/memmove_386.s:145
> > runtime.sighandler(s=0x30887660,v=0x308876e4,gp=0x106d31b0)+0x126
> > /usr/glenda/src/go/src/pkg/runtime/os_plan9_386.c:67
> > runtime.sigtramp(ureg=0x30887660,note=0x106d31b0)+0x44
> > /usr/glenda/src/go/src/pkg/runtime/sys_plan9_386.s:161
> > 0x308876e4 ?file?:0
> > acid:
> 
> I am surprised, but also relieved that we have a resproducible mistake
> outside the run.rc scope.  We can focus on that.

this is not surprising.  the backtrace and error seem to tell us everything
we need to know.  go appears doing floating point in a note handler,
which is not legal in plan 9.

checking the code quickly from here
        http://code.google.com/p/go/source/browse/src/pkg/runtime/memmove_386.s
we have

144     move_33through64:
145             MOVOU   (SI), X0

which is indeed floating point in memmove.  a quick fix would be to
comment out line 47 and make line 48 an unconditional jump.

47      //      TESTL   $0x4000000, runtime·cpuid_edx(SB) // check for sse2
48      JMP     nosse2          // JEQ  nosse2

- erik

Reply via email to