2.4.7-ben0: mozilla-cvs enter xmon
Hi,
I'm running 2.4.7-ben0 rsync'ed on Jul 27 19:56 (date of ChangeSet file).
Linux adam 2.4.7-ben0 #1 Mon Jul 30 11:41:55 CEST 2001 ppc unknown
ii mozilla-browser-cvs 0.0.20010717.01.trunk An Open Source WWW browser for X and GTK+ (CVS version)
I was connected with PPP using Z8530 ESCC (cobalt modem).
This is my first PowerPC kernel OOPS inside XMON:
vector: 300 at pc=c00123d4, lr=d5837ba8
msr=1032, sp=c936fe10 [c936fd60]
dar=d4000000, dsisr=40000000
current=c936e00, pid=8763, comm=mozilla-bin
mon> x
vector: 400 at pc=28fc0000, lr=c00052e0
msr=40009032, sp=c936fb60 [c936fab0]
current=c936e00, pid=8763, comm=mozilla-bin
mon> x
vector: 700 at pc=1083810, lr=c00052e0
msr=89032, sp=c936f7f0 [c936f740]
current=c936e00, pid=8763, comm=mozilla-bin
mon> x
Binary search into System.map, objdump and gcc -S -g reveal:
c0012394 T sys_sched_get_priority_max
c00123e8 T sys_sched_get_priority_min
000013fc <sys_sched_get_priority_max>:
13fc: 94 21 ff f0 stwu r1,-16(r1)
1400: 93 e1 00 0c stw r31,12(r1)
1404: 7c 3f 0b 78 mr r31,r1
1408: 7c 60 1b 79 mr. r0,r3
140c: 38 60 ff ea li r3,-22
1410: 41 82 00 2c beq 143c <sys_sched_get_priority_max+0x40>
1414: 41 80 00 2c blt 1440 <sys_sched_get_priority_max+0x44>
1418: 2f 80 00 02 cmpwi cr7,r0,2
141c: 7c 00 00 26 mfcr r0
1420: 54 00 f7 fe rlwinm r0,r0,30,31,31
1424: 7c 00 00 d0 neg r0,r0
1428: 7c 09 00 f8 not r9,r0
142c: 7c 00 18 38 and r0,r0,r3
1430: 71 29 00 63 andi. r9,r9,99
1434: 7c 03 4b 78 or r3,r0,r9
1438: 48 00 00 08 b 1440 <sys_sched_get_priority_max+0x44>
143c: 38 60 00 00 li r3,0
1440: 81 61 00 00 lwz r11,0(r1)
1444: 83 eb ff fc lwz r31,-4(r11)
1448: 7d 61 5b 78 mr r1,r11
144c: 4e 80 00 20 blr
pc=c00123d4 is 143c (1440 should be better). As trap 0x300 is SIGSEGV
address error (store), I think that $r1 (aka stack pointer) was trashed.
c0005150 T ppc_irq_dispatch_handler
c0005384 T do_IRQ
00000734 <ppc_irq_dispatch_handler>:
734: 94 21 ff d0 stwu r1,-48(r1)
...
this is "if (!action) goto out;"
888: 41 82 00 80 beq 908 <ppc_irq_dispatch_handler+0x1d4>
this is inlined handle_irq_event()
88c: 7f 7f db 78 mr r31,r27
890: 80 1f 00 04 lwz r0,4(r31)
894: 3b c0 00 00 li r30,0
898: 74 09 20 00 andis. r9,r0,8192
89c: 40 82 00 08 bne 8a4 <ppc_irq_dispatch_handler+0x170>
8a0: 48 00 00 01 bl 8a0 <ppc_irq_dispatch_handler+0x16c>
this will setup arguments for action->handler(irq, action->dev_id, regs);
8a4: 81 3f 00 00 lwz r9,0(r31)
8a8: 80 9f 00 10 lwz r4,16(r31)
8ac: 7f 83 e3 78 mr r3,r28
8b0: 7d 28 03 a6 mtlr r9
8b4: 7f 45 d3 78 mr r5,r26
this is status |= action->flags
8b8: 80 1f 00 04 lwz r0,4(r31)
8bc: 7f de 03 78 or r30,r30,r0
this is action->handler(irq, action->dev_id, regs);
8c0: 4e 80 00 21 blrl
this is action = action->next
8c4: 83 ff 00 14 lwz r31,20(r31)
8c8: 2c 1f 00 00 cmpwi r31,0
8cc: 40 82 ff d8 bne 8a4 <ppc_irq_dispatch_handler+0x170>
8d0: 77 c0 10 00 andis. r0,r30,4096
8d4: 41 82 00 0c beq 8e0 <ppc_irq_dispatch_handler+0x1ac>
...
964: 4e 80 00 20 blr
lr=c00052e0 is 8c4
It's in fact line action = action->next in handle_irq_event() called in
for(;;) loop near line 515 in function ppc_irq_dispatch_handler().
As trap 0x400 is SIGBUS Instruction bus error, action->handler seems to
hold a bad value.
Next trap 0x700 is SIGTRAP maybe a xmon interraction.
Hope that helps.
--
Edouard G. Parmelan
http://egp.free.fr
Reply to: