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