Current-Users archive

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

Re: panic: kernel diagnostic assertion "l == curlwp"



Looks like I hit another one on this path with your latest fix in place:

[ 3737.4034537] panic: kernel diagnostic assertion "l == curlwp || ((l->l_flag & LW_SYSTEM) && pcu_valid == 0)" failed: file "/home/source/ab/HEAD/src/sys/kern/subr_pcu.c", line 133
[ 3737.4134523] cpu18: Begin traceback...
[ 3737.4234525] trace fp ffffc0086cad0c50
[ 3737.4234525] fp ffffc0086cad0c70 vpanic() at ffffc000004b230c netbsd:vpanic+0x15c
[ 3737.4334526] fp ffffc0086cad0ce0 kern_assert() at ffffc000007d052c netbsd:kern_assert+0x5c
[ 3737.4434535] fp ffffc0086cad0d70 pcu_discard_all() at ffffc000004a9a58 netbsd:pcu_discard_all+0x58
[ 3737.4534583] fp ffffc0086cad0d90 lwp_exit() at ffffc00000461558 netbsd:lwp_exit+0x1b0
[ 3737.4534583] fp ffffc0086cad0dd0 sys__lwp_create() at ffffc000004c4ed8 netbsd:sys__lwp_create+0xe8
[ 3737.4634613] fp ffffc0086cad0e20 syscall() at ffffc0000008a624 netbsd:syscall+0x18c
[ 3737.4734599] tf ffffc0086cad0ed0 el0_trap() at ffffc00000088c34 netbsd:el0_trap
[ 3737.4834609] ---- trapframe 0xffffc0086cad0ed0 (304 bytes) ----
[ 3737.4834609]     pc=0000fdbd319c8958,   spsr=0000000020000000
[ 3737.4934603]    esr=0000000056000135,    far=0000fdbd319eb030
[ 3737.4934603]     x0=0000ffffffbc41c0,     x1=0000fdbd31db2260
[ 3737.5034629]     x2=0000fdbd31d8e200,     x3=0000000000000000
[ 3737.5134632]     x4=0000ffffffbc4190,     x5=0000000000000030
[ 3737.5134632]     x6=0000ffffffbc41c0,     x7=0000fdbd31af0208
[ 3737.5234664]     x8=0000000000000001,     x9=0000000000001003
[ 3737.5234664]    x10=000000000000000c,    x11=0000000000000001
[ 3737.5334641]    x12=0000fdbd31da5c18,    x13=0000000000000000
[ 3737.5334641]    x14=0000000000000000,    x15=0000fdbd31400980
[ 3737.5434637]    x16=0000fdbd31da22e0,    x17=0000fdbd319c8954
[ 3737.5534632]    x18=0000000000000001,    x19=0000ffffffbc41c0
[ 3737.5534632]    x20=0000ffffec172e60,    x21=0000000000000002
[ 3737.5634733]    x22=0000fdbd31db2260,    x23=0000fdbd31d8e200
[ 3737.5634733]    x24=0000ffffec172000,    x25=0000ffffffbc4190
[ 3737.5734687]    x26=0000ffffec1732a8,    x27=0000ffffec173070
[ 3737.5734687]    x28=0000fdbd31db3400, fp=x29=0000ffffffbc41d0
[ 3737.5834824] lr=x30=0000fdbd31d8e224,     sp=0000ffffffbc40e0
[ 3737.5934691] ------------------------------------------------
[ 3737.5934691] cpu18: End traceback...
Stopped in pid 14611.14611 (conftest) at        netbsd:cpu_Debugger+0x4:ret
db{18}>


On Mon, 1 Jun 2020, Jason Thorpe wrote:



On Jun 1, 2020, at 6:36 AM, Kamil Rytarowski <kamil%netbsd.org@localhost> wrote:

lwp_exit() used to work for curlwp and !curlwp.

There is a regression that there was introduced code called from
lwp_exit() calling lwp_thread_cleanup(l) that asserts curlwp,
effectively enforcing lwp_exit() to be operational for curlwp only.

I just reviewed the entire code path below that assertion again, and nothing in the current incarnation of the code relies on l == curlwp.  I've removed the assertion just now.

-- thorpej




Home | Main Index | Thread Index | Old Index