Subject: port-mips/27298: FP trap handler bug (at least in cobalt port) -> kernel panic
To: None <gnats-bugs@gnats.NetBSD.org>
From: Markus W Kilbinger <kilbi@rad.rwth-aachen.de>
List: netbsd-bugs
Date: 10/19/2004 09:49:33
>Number: 27298
>Category: port-mips
>Synopsis: FP trap handler bug (at least in cobalt port) -> kernel panic
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-mips-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Oct 19 07:50:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:
>Release: NetBSD 2.99.10
>Organization:
>Environment:
System: NetBSD cochise 2.99.10 NetBSD 2.99.10 (COCHISE) #2: Tue Oct 19 00:06:57 MEST 2004 kilbi@qie:/sys/arch/cobalt/compile/COCHISE cobalt
Architecture: mipsel
Machine: cobalt
>Description:
Higher optimized (-mips2 and higher) binaries containing long
float to int casts cause kernel panics (at least on my cobalt
qube 2) with following ddb output:
trap: TLB miss (load or instr. fetch) in kernel mode
status=0x20007c03, cause=0x8, epc=0x8019514c, vaddr=0x4
pid=8414 cmd=try usp=0x7fffd068 ksp=0xc870be00
Stopped in pid 8414.1 (try) at netbsd:trapsignal+0x2c: lw v0,0(a1)
db> bt
trapsignal+2c (8e65fcf8,4,4620010d,80243800) ra 800016ac sz 64
MachFPTrap+cc (8e65fcf8,4,4620010d,80243800) ra 8023b3a4 sz 24
8023acc4+6e0 (8e65fcf8,4,4620010d,80243800) ra 0 sz 0
User-level: pid 8414.1
db> ps
PID PPID PGRP UID S FLAGS LWPS COMMAND WAIT
>8414 25684 9563 0 2 0x4002 1 try
>How-To-Repeat:
Compile a (minimum) C program containing a type cast like
int i32;
double f, g;
[...]
i32 = (int) g;
, compile it with higher mips optimization (>= -mips2) like
gcc -O -s -mips2 -o test-casti32 test-casti32.c
, execute it and see how the kernel panics (when the code is
executed! ;-)) (see above ddb output) .
Compiling the same code w/o (or -mips1) mips optimization
yields a working binary (guess the compiler does not emit the
'problematic' code then).
BTW: I ran into this problem when compiling
pkgsrc/lang/perl5{,8} where the Configure script tests exactly
this cast capability of the system/compiler.
I tested this only on my cobalt qube 2 (RM 5200)! After some
discussion on port-cobalt I decided to choose 'port-mips'
category (hope this' correct).
>Fix:
n/a
>Release-Note:
>Audit-Trail:
>Unformatted: