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.

I'm hoping cinap, with his in-depth knowledge of the kernel, can shed
some light here.  It does look as if we have some error in the
handling of syscalls or notes, although I already mentioned I expected
a note to a process that had received a floating point exception
rather than a floating point exception in a note handler.

In my most recent copy of src/go/src/pkg/runtime/sys_plan9_386.s line
161 is a get_tls(BX), on return from sighandler().  Get_tls on the 386
resolves to

        MOVL _tos(SB),r // zasm_plan9_386.h:8

so unless SB is way off, it does not seem to be a problem.  I'd lay my
bets on sighandler() (so_plan9_386.c:28), but I am not comfortable
digging in there.

++L


Reply via email to