NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

toolchain/45168: Failing "c->c_magic == CALLOUT_MAGIC" assertion on evbarm kernel build with gcc 4.5



>Number:         45168
>Category:       toolchain
>Synopsis:       Failing "c->c_magic == CALLOUT_MAGIC" assertion on evbarm 
>kernel build with gcc 4.5
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jul 23 11:05:00 +0000 2011
>Originator:     Peter Tworek
>Release:        current
>Organization:
>Environment:
NetBSD  5.99.55 NetBSD 5.99.55 (GTA02_FAKE) #4: Sat Jul 23 12:40:01 CEST 2011  
tworaz@crow:/home/tworaz/devel/NetBSD/obj-gta02/sys/arch/evbarm/compile/GTA02_FAKE
 evbarm
>Description:
I've encountered a problem which seems to be triggered by new gcc
version. So far I've only reproduced it on OpenMoko GTA02 port I'm working on, 
but I think it should also be reproducible on other evbarm ports. In my 
configuration I have a kernel and a small ramdisk running on both the device 
and qemu. With gcc 4.1 everything works as expected. The kernel boots and I'm 
able to runn a few programs I've included in my ramdisk. When I've switched to 
4.5 I've experienced the
following problem. In my ramdisk's /etc/rc I simply execute /bin/sh.
When I run it on qemu I see a shell prompt but after I type any command
kernel panics.

panic: kernel diagnostic assertion "c->c_magic == CALLOUT_MAGIC" failed:
file "/home/tworaz/devel/NetBSD/src/sys/kern/kern_timeout.c", line 314
Stopped in pid 3.1 (ls) at      netbsd:cpu_Debugger+0x4:        bx      r14
db> bt
netbsd:panic+0x10
        scp=0xc0314560 rlv=0xc03d7f68 (netbsd:kern_assert+0x40)
        rsp=0xc27bde2c rfp=0xc27bde40
        r7=0xc069cf80
netbsd:kern_assert+0xc
        scp=0xc03d7f34 rlv=0xc02bb8d0 (netbsd:callout_destroy+0x8c)
        rsp=0xc27bde44 rfp=0xc27bde54
        r4=0xc1cbbb0c
netbsd:callout_destroy+0xc
        scp=0xc02bb850 rlv=0xc0291ee4 (netbsd:exit1+0x328)
        rsp=0xc27bde58 rfp=0xc27bdeac
        r4=0xc27bde64
netbsd:exit1+0xc
        scp=0xc0291bc8 rlv=0xc02923b0 (netbsd:sys_exit+0x3c)
        rsp=0xc27bdeb0 rfp=0xc27bdec8
        r7=0x00000001
0
        scp=0x00000000 rlv=0xc0326e8c (netbsd:syscall+0x88)
        rsp=0xc27bdecc rfp=0xc27bdf58
uvm_fault(0xc06a9e44, fffff000, 1) -> e
Fatal kernel mode data abort: 'Translation Fault (S)'
trapframe: 0xc27bdb20
FSR=00000005, FAR=fffffff8, spsr=60000013
r0 =0000001e, r1 =c03e8dba, r2 =fffffff8, r3 =00000000
r4 =00000000, r5 =c27bdec8, r6 =c0314e90, r7 =e92dd880
r8 =00000001, r9 =c27bde98, r10=0000fffb, r11=c27bdba0
r12=c27bdab8, ssp=c27bdb6c, slr=c0314128, pc =c020d360

Faulted in DDB; continuing...

The same ramdisk (built with gcc 4.5) works fine when using kernel compiled 
with gcc 4.1.
>How-To-Repeat:
Steps:
1. Build evbarm kernel + ramdisk with gcc 4.5. Thernel needs to have 
DIAGNOSTICS option enabled
2. Boot it and try to run any command.

Exp:
No kernel assertions are triggered

Act:
Kernel panics.

>Fix:
Workaround: Build userland with gcc 4.5, kernel with 4.1.



Home | Main Index | Thread Index | Old Index