[parisc-linux] 32 bit compiler bug causing kernel crashes

David Huggins-Daines dhd@linuxcare.com
15 Sep 2000 13:43:10 -0400


John Marvin <jsm@udlkern.fc.hp.com> writes:

> I've been investigating a problem that was leading to the kernel executing
> a break 0,0 (executing 0) at random times. I've tracked the problem down
> to a compiler bug.

Cool.  Strangely enough I don't see this in 2.3.99pre8, only in 2.4.
The problem with userspace executing zero at random times is obviously
something else.

> So here is the code at the beginning of schedule():
> 
> 	c0114404 <schedule>:
> 	c0114404:       08 03 02 41     copy r3,r1
> 	c0114408:       08 1e 02 43     copy sp,r3

Hm.  This bit above puzzles me, because I thought the kernel was
either compiled with -fomit-frame-pointer, or with sufficient
optimization that the frame pointer would be omitted anyway.

> 4--->   c011440c:       0c 68 12 90     stw  r8,8(sr0,r3)
> 	c0114410:       08 1e 02 48     copy sp,r8
> 	c0114414:       6b c2 3f d9     stw rp,-14(sr0,sp)
> 	c0114418:       08 08 02 53     copy r8,r19
> 5--->   c011441c:       6f c1 01 00     stw,ma r1,80(sr0,sp)

Wow.  That is some unbelievably screwed up register spilling.  In fact
I suspect that this may be a reload bug.

-- 
dhd@linuxcare.com, http://www.linuxcare.com/
Linuxcare. Support for the revolution.