NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/51056: reader-writer lock error
The following reply was made to PR kern/51056; it has been noted by GNATS.
From: Martin Husemann <martin%duskware.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/51056: reader-writer lock error
Date: Sat, 9 Apr 2016 22:08:07 +0200
On Sat, Apr 09, 2016 at 04:17:51PM +0200, Martin Husemann wrote:
> I had the same crash again with a very recentish kernel, now running the
> same with LOCKDEBUG.
And it says (if I deciphered the photo correctly) the lock in question
was locked here:
nd6_llinfo_timer(void *arg)
{
struct llentry *ln = arg;
struct ifnet *ifp;
struct nd_ifinfo *ndi = NULL;
bool send_ns = false;
const struct in6_addr *daddr6 = NULL;
mutex_enter(softnet_lock);
KERNEL_LOCK(1, NULL);
LLE_WLOCK(ln);
i.e.:
#13 0xffffffff8050595d in nd6_llinfo_timer (arg=0xfffffe8135c863c8)
at ../../../../netinet6/nd6.c:490
where
(gdb) p arg
$3 = (void *) 0xfffffe8135c863c8
(gdb) p *(struct llentry *)arg
$4 = {lle_next = {le_next = 0x0, le_prev = 0xfffffe810744fa10}, r_l3addr = {
addr4 = {s_addr = 33587454}, addr6 = {__u6_addr = {
__u6_addr8 = "\376\000\002\000\000\000\000\236Ç\246\377\376\233\267r", __u6_addr16 = {33022, 512, 0, 0, 51102, 65446, 39934, 29367}, __u6_addr32 = {
33587454, 0, 4289120158, 1924635646}}}}, ll_addr = {
mac_aligned = 126132915980188, mac16 = {51100, 39846, 29367},
mac8 = "\234Ç\246\233\267r", '\000' <repeats 13 times>}, spare0 = 0,
spare1 = 0, lle_tbl = 0xfffffe81071997d0, lle_head = 0xfffffe810744fa10,
lle_free = 0xffffffff804ee628 <in6_lltable_destroy_lle>, lle_ll_free = 0x0,
la_hold = 0x0, la_numheld = 0, la_expire = 0, la_flags = 8264, la_asked = 3,
la_preempt = 0, ln_byhint = 0, ln_state = 0, ln_router = 1, ln_ntick = 0,
lle_refcnt = 412, lle_chain = {le_next = 0x0, le_prev = 0x0}, lle_timer = {
_c_store = {0xffffffff815025e8 <callout_cpu0+168>,
0xffffffff815025e8 <callout_cpu0+168>,
0xffffffff8050557c <nd6_llinfo_timer>, 0xfffffe8135c863c8,
0xffffffff81502540 <callout_cpu0>, 0x108000e39cf, 0x11deeba1, 0x0, 0x0,
0x0}}, lle_lock = {rw_owner = 18446742429671606372}, la_opaque = 0x0}
and then in
#6 0xffffffff804eed4d in in6_lltable_lookup (llt=<optimized out>,
flags=<optimized out>, l3addr=<optimized out>)
at ../../../../netinet6/in6.c:2487
if (flags & LLE_EXCLUSIVE)
LLE_WLOCK(lle);
else
LLE_RLOCK(lle);
return lle;
}
we try to lock it again.
(gdb) p lle
$5 = (struct llentry *) 0xfffffe8135c863c8
(gdb) p *lle
$6 = {lle_next = {le_next = 0x0, le_prev = 0xfffffe810744fa10}, r_l3addr = {
addr4 = {s_addr = 33587454}, addr6 = {__u6_addr = {
__u6_addr8 = "\376\000\002\000\000\000\000\236Ç\246\377\376\233\267r", __u6_addr16 = {33022, 512, 0, 0, 51102, 65446, 39934, 29367}, __u6_addr32 = {
33587454, 0, 4289120158, 1924635646}}}}, ll_addr = {
mac_aligned = 126132915980188, mac16 = {51100, 39846, 29367},
mac8 = "\234Ç\246\233\267r", '\000' <repeats 13 times>}, spare0 = 0,
spare1 = 0, lle_tbl = 0xfffffe81071997d0, lle_head = 0xfffffe810744fa10,
lle_free = 0xffffffff804ee628 <in6_lltable_destroy_lle>, lle_ll_free = 0x0,
la_hold = 0x0, la_numheld = 0, la_expire = 0, la_flags = 8264, la_asked = 3,
la_preempt = 0, ln_byhint = 0, ln_state = 0, ln_router = 1, ln_ntick = 0,
lle_refcnt = 412, lle_chain = {le_next = 0x0, le_prev = 0x0}, lle_timer = {
_c_store = {0xffffffff815025e8 <callout_cpu0+168>,
0xffffffff815025e8 <callout_cpu0+168>,
0xffffffff8050557c <nd6_llinfo_timer>, 0xfffffe8135c863c8,
0xffffffff81502540 <callout_cpu0>, 0x108000e39cf, 0x11deeba1, 0x0, 0x0,
0x0}}, lle_lock = {rw_owner = 18446742429671606372}, la_opaque = 0x0}
Home |
Main Index |
Thread Index |
Old Index