NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-evbppc/57926: ppc405: lockdebug crash because cpu_index(curcpu()) is invalid (not 0) value.
>Number: 57926
>Category: port-evbppc
>Synopsis: ppc405: lockdebug crash because cpu_index(curcpu()) is invalid (not 0) value.
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: port-evbppc-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Feb 11 16:45:00 +0000 2024
>Originator: Kouichi Hashikawa
>Release: 10.0-RC3
>Organization:
>Environment:
>Description:
On OPENBLOCKS266(ppc405GPr) with LOCKDEBUG kernel,
kernel sometimes crash with mutex_vector_exit: not held by current CPU.
(or sometimes mutex_vector_enter,517: uninitialized lock...)
ddb shows following message, revalent CPU is cpu_index(curcpu()).
Why index is changed from 0??
Mutex error: mutex_vector_exit,730: not held by current CPU
[ 2261.9775931] lock address : 7f7ff98
[ 2261.9775931] type : spin
[ 2261.9775931] initialized : netbsd:sched_cpuattach+0x138
[ 2261.9775931] shared holds : 0 exclusive: 1
[ 2261.9775931] shares wanted: 0 exclusive: 0
[ 2261.9775931] relevant cpu : 187 last held: 0
[ 2261.9775931] relevant lwp : 0x0000000001b30400 last held: 0x0000000007ef4940
[ 2261.9775931] last locked* : netbsd:softint_thread+0x14c
[ 2261.9775931] unlocked : netbsd:mi_switch+0x190
[ 2261.9775931] owner field : 000000000000000000 wait/spin: 0/1
[ 2261.9775931] panic: LOCKDEBUG: Mutex error: mutex_vector_exit,730: not held by current CPU
[ 2261.9775931] cpu187: Begin traceback...
[ 2261.9775931] 0x0086bdc0: at vpanic+0x160
[ 2261.9775931] 0x0086bdf0: at panic+0x58
[ 2261.9775931] 0x0086be30: at lockdebug_abort1+0x160
[ 2261.9775931] 0x0086be60: at mutex_exit+0x1e4
[ 2261.9775931] 0x0086be80: at mi_switch+0x18c
[ 2261.9775931] 0x0086bec0: at syscall+0x314
[ 2261.9775931] 0x0086bf20: user SC trap #3 by 0xfdbbc128: srr1=0xc030
[ 2261.9775931] r1=0xfffeaff0 cr=0x44004242 xer=0 ctr=0xfdbbc120 esr=0x800000 pid=0xba
I examine 0x5e3580 (struct cpu_info), I got bb=187 as cpu_index(curcpu()).
db> x/bm 0x5e3580,256
netbsd:cpu_info: 00 00 00 bb 00 00 00 00 07 ef 4f 40 00 50 01 20
..........O@.P.
'187' is ctx+1, that I got from 'machine ctx' on ddb.
db> show procs
PID LID S CPU FLAGS STRUCT LWP * NAME WAIT
19192>19192 7 187 40000 1b30400 nbawk
22446 22446 3 187 180 74db0c0 nbmake pipe_rd
18258 18258 3 187 180 74db3c0 sh wait
db> mac ctx
process 0x23f56a8:pid:19192 pmap:0x6cd6c00 ctx:186 nbawk
process 0x23f4f28:pid:22446 pmap:0x7f67b00 ctx:181 nbmake
process 0x23f42a8:pid:18258 pmap:0x7f66e80 ctx:180 sh
process 0x23f51a8:pid:20474 pmap:0x6cd6fc0 ctx:115 nbmake
I cannot find why cpu_index(curcpu()) is overwitten...
>How-To-Repeat:
>Fix:
Home |
Main Index |
Thread Index |
Old Index