NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/42656: netbsd-5: panic LOCKDEBUG in opencrypto(9) w/ hifn(4)
The following reply was made to PR kern/42656; it has been noted by GNATS.
From: Hubert Feyrer <hubert%feyrer.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/42656: netbsd-5: panic LOCKDEBUG in opencrypto(9) w/
hifn(4)
Date: Fri, 22 Jan 2010 12:28:31 +0100 (CET)
On Fri, 22 Jan 2010, Hubert Feyrer wrote:
> Adding DIAGNOSTICS to the kernel, the panics happen, too
> (with a somewhat funky traceback, though):
Here's an updated panic, which shows the same place, but that it happens
in glxsb - so it's not specific to hifn, but a general bug in the
opencrypto system.
Full data:
Fr 22 Jan 2010 12:08:01 CET
NetBSD 5.0/i386 with sources from netbsd-5 branch as of 20090121
sh -c 'while true ; do openssl speed -evp aes-128-cbc -elapsed ; done'
# Mutex error: lockdebug_barrier: spin lock held
lock address : 0x00000000c0477af4 type : spin
initialized : 0x00000000c0113304
shared holds : 0 exclusive: 1
shares wanted: 0 exclusive: 0
current cpu : 0 last held: 0
current lwp : 0x00000000cb579860 last held: 0x00000000cb579860
last locked : 0x00000000c0117945 unlocked : 0x00000000c0118aa9
owner field : 0x0000000000010600 wait/spin: 0/1
panic: LOCKDEBUG
fatal breakpoint trap in supervisor mode
trap type 1 code 0 eip c033879c cs 8 eflags 246 cr2 bb9bd600 ilevel 6
Stopped in pid 875.1 (openssl) at netbsd:breakpoint+0x4: popl
%ebp
db{0}>
db{0}> bt
breakpoint(c04063c0,cb5b5838,c0426f80,c02a1f4f,6,1,0,0,cb5b5838,c0100e11)
at net
bsd:breakpoint+0x4
panic(c04063c2,c0403e73,c03daf74,c04063db,4,1000001,6,0,20,cb5b58f0) at
netbsd:panic+0x1b0
lockdebug_abort1(c04063db,1,0,0,cb5b59c4,cb5b5dc0,cb579860,0,cb5b5cbc,cb5b58f4)
at netbsd:lockdebug_abort1+0xbb
mutex_vector_enter(c047fb2c,cb5b5d48,80879d8,4,cb56d768,cb579860,cb5b58dc,c03b5b56,cb763240,20)
at netbsd:mutex_vec
tor_enter+0x3cd
rnd_extract_data(cb5b58f0,20,1,c03b5b56,cb763240,cb4f8b00,cb5b590c,c03b5b56,cb763240,cb4f8b00)
at netbsd:rnd_extrac
t_data+0x13
arc4_randrekey(c0e40a10,10,cb5b5a3c,c029bb08,ca016d4c,c0e40a00,0,c0117945,cb579860,6)
at netbsd:arc4_randrekey+0x3d
glxsb_crypto_newsession(ca67ce74,cb5b5a6c,cb5b5b1c,0,caf60340,c0477af6,cb5b5a6c,c06ca040,4,0)
at netbsd:glxsb_crypt
o_newsession+0x131
crypto_newsession(cb5b5b64,cb5b5b1c,1,c03ee300,62d,c044b6d4,cb5b5adc,0,c029f797,cb579860)
at netbsd:crypto_newsessi
on+0xac
cryptodev_session(c0d66f00,cb5b5c60,cb5b5bac,c03b5b56,c06d09a0,c04719c0,cb5b5bac,c0427098,c04719c0,c0d66f00)
at net
bsd:cryptodev_session+0x3f3
cryptof_ioctl(cb4feec0,c0206370,cb5b5c60,0,c028f794,cb579860,7,c06cba14,3,0)
at netbsd:cryptof_ioctl+0x78
sys_ioctl(cb579860,cb5b5d00,cb5b5d28,3,c0206370,bb8120d0,b,c03759f6,0,0)
at netbsd:sys_ioctl+0x13f
syscall(cb5b5d48,b3,ab,1f,1f,bb8120f0,b,bfbfb6b8,bbb99420,bb8120d0) at
netbsd:syscall+0xbd
db{0}>
db{0}> show reg
ds 0x10
es 0x10
fs 0x30
gs 0x10
edi 0xc03daf74 __func__.7295
esi 0xc04063c2 copyright+0x18c22
ebp 0xcb5b57ec
ebx 0x104
edx 0x8
ecx 0x6
eax 0x1
eip 0xc033879c breakpoint+0x4
cs 0x8
eflags 0x246
esp 0xcb5b57ec
ss 0x10
netbsd:breakpoint+0x4: popl %ebp
db{0}>
db{0}> show lock crypto_mtx
lock address : 0x00000000c0477af4 type : spin
initialized : 0x00000000c0113304
shared holds : 0 exclusive: 1
shares wanted: 0 exclusive: 0
current cpu : 0 last held: 0
current lwp : 0x00000000cb579860 last held: 0x00000000cb579860
last locked : 0x00000000c0117945 unlocked : 0x00000000c0118aa9
owner field : 0x0000000000010600 wait/spin: 0/1
db{0}>
db{0}> show lock rndpool_mtx
lock address : 0x00000000c047fb2c type : sleep/adaptive
initialized : 0x00000000c0258354
shared holds : 0 exclusive: 0
shares wanted: 0 exclusive: 1
current cpu : 0 last held: 0
current lwp : 0x00000000cb579860 last held: 000000000000000000
last locked : 0x00000000c0257dff unlocked : 0x00000000c03610bc
owner field : 000000000000000000 wait/spin: 0/0
Turnstile chain at 0xc06cbee0.
=> No active turnstile for this lock.
db{0}>
gdb netbsd.gdb:
(gdb) # address from "last locked"
(gdb) list *(0x00000000c0117945)
0xc0117945 is in cryptodev_session
(/usr/cvs/src-5/sys/opencrypto/cryptodev.c:1615).
1610 }
1611 }
1612
1613 /* crypto_newsession requires that we hold the mutex. */
1614 mutex_spin_enter(&crypto_mtx);
1615 error = crypto_newsession(&sid, crihead, crypto_devallowsoft);
1616 if (!error) {
1617 DPRINTF(("cyrptodev_session: got session %d\n",
(uint32_t)sid));
1618 cse = csecreate(fcr, sid, crie.cri_key, crie.cri_klen,
1619 cria.cri_key, cria.cri_klen, (txform ? sop->cipher
: 0), sop->mac,
(gdb)
(gdb) # line from panic message
(gdb) list *(cryptodev_session+0x3f3)
0xc0117963 is in cryptodev_session
(/usr/cvs/src-5/sys/opencrypto/cryptodev.c:1616).
1611 }
1612
1613 /* crypto_newsession requires that we hold the mutex. */
1614 mutex_spin_enter(&crypto_mtx);
1615 error = crypto_newsession(&sid, crihead, crypto_devallowsoft);
1616 if (!error) {
1617 DPRINTF(("cyrptodev_session: got session %d\n",
(uint32_t)sid));
1618 cse = csecreate(fcr, sid, crie.cri_key, crie.cri_klen,
1619 cria.cri_key, cria.cri_klen, (txform ? sop->cipher
: 0), sop->mac,
1620 (tcomp ? sop->comp_alg : 0), txform, thash, tcomp);
(gdb)
Home |
Main Index |
Thread Index |
Old Index