kern/98298: panic: mutex gif softc not owned at
/usr/src/sys/kern/kern_mutex.c:312
Eugene Grosbein
eugen at kuzbass.ru
Thu Jun 1 11:00:31 PDT 2006
>Number: 98298
>Category: kern
>Synopsis: panic: mutex gif softc not owned at /usr/src/sys/kern/kern_mutex.c:312
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jun 01 18:00:28 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Eugene Grosbein
>Release: FreeBSD 6.1-STABLE i386
>Organization:
Svyaz Serivice JSC
>Environment:
System: FreeBSD grosbein.pp.ru 6.1-STABLE FreeBSD 6.1-STABLE #31: Thu May 25 21:56:26 KRAST 2006 eu at grosbein.pp.ru:/mnt/usr/local/obj6/usr/src/sys/GENERIC i386
GENERIC kernel config plus options INVARIANTS and INVARIANT_SUPPORT
>Description:
GENERIC kernel panices just after gif(4) recursion is detected
>How-To-Repeat:
1. Build the kernel using GENERIC kernel config plus
options INVARIANTS and INVARIANT_SUPPORT (without these options
panic occures too, but just for 'page not present').
2. Build this kernel to single user mode and run the commands:
ifconfig gif0 create tunnel 1.1.1.1 2.2.2.2
ifconfig gif0 inet 10.10.10.10 20.20.20.20 netmask 255.255.255.252 mtu 1500 up
route add default 20.20.20.20
A second later the panic occures. Here is kgdb backtrace:
panic: mutex gif softc not owned at /usr/src/sys/kern/kern_mutex.c:312
Uptime: 50s
Dumping 575 MB (2 chunks)
chunk 0: 1MB (159 pages) ... ok
chunk 1: 575MB (147184 pages) 559 543 527 511 495 479 463 447 431 415 399 383 367 351 335 319 303 287 271 255 239 223 207 191 175 159 143 127 111 95 79 63 47 31 15
#0 doadump () at pcpu.h:165
165 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
(kgdb) bt full
#0 doadump () at pcpu.h:165
No locals.
#1 0xc06b824a in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:402
first_buf_printf = 1
#2 0xc06b857d in panic (fmt=0xc0964d07 "mutex %s not owned at %s:%d")
at /usr/src/sys/kern/kern_shutdown.c:558
td = (struct thread *) 0xc3709a80
bootopt = 260
newpanic = 0
ap = 0xd65939b0 "ºß\226À®K\226À8\001"
buf = "mutex gif softc not owned at /usr/src/sys/kern/kern_mutex.c:312", '\0' <repeats 192 times>
#3 0xc06ae8c7 in _mtx_assert (m=0xc3ab4c84, what=0,
file=0xc0964bae "/usr/src/sys/kern/kern_mutex.c", line=312)
at /usr/src/sys/kern/kern_mutex.c:754
No locals.
#4 0xc06ae3d0 in _mtx_unlock_flags (m=0xc3ab4c84, opts=0,
file=0xc096dfc4 "/usr/src/sys/net/if_gif.c", line=479)
at /usr/src/sys/kern/kern_mutex.c:312
No locals.
#5 0xc073af10 in gif_output (ifp=0xc39a3800, m=0xc3a61b00, dst=0xd6593bd8,
rt=0x0) at /usr/src/sys/net/if_gif.c:479
sc = (struct gif_softc *) 0xc3ab4c80
mtag = (struct m_tag *) 0x0
error = 5
gif_called = 5
af = 28
#6 0xc07a0bd5 in nd6_output (ifp=0xc39a3800, origifp=0x0, m0=0xc3a61b00,
dst=0xd6593bd8, rt0=0x32) at /usr/src/sys/netinet6/nd6.c:2125
m = (struct mbuf *) 0xc3a61b00
rt = (struct rtentry *) 0x0
gw6 = (struct sockaddr_in6 *) 0xffffffff
ln = (struct llinfo_nd6 *) 0x0
error = 50
#7 0xc07998eb in ip6_output (m0=0x0, opt=0xc0a4dea0, ro=0xd6593bd4, flags=0,
im6o=0xd6593c3c, ifpp=0xd6593c28, inp=0x0)
at /usr/src/sys/netinet6/ip6_output.c:994
ia6 = (struct in6_ifaddr *) 0x0
ip6 = (struct ip6_hdr *) 0xc3a61bd8
mhip6 = (struct ip6_hdr *) 0xc0a4dea0
ifp = (struct ifnet *) 0xc39a3800
origifp = (struct ifnet *) 0xc39a3800
m = (struct mbuf *) 0xc3a61b00
hlen = -1016035804
tlen = 72
len = 26487543
off = -579701800
ip6route = {ro_rt = 0x0, ro_dst = {sin6_len = 28 '\034',
sin6_family = 28 '\034', sin6_port = 0, sin6_flowinfo = 0, sin6_addr = {
__u6_addr = {
__u6_addr8 = "ÿ\002\000\005\000\000\000\000\000\000\000\001ÿ\211\225\037", __u6_addr16 = {767, 1280, 0, 0, 0, 256, 35327, 8085}, __u6_addr32 = {
83886847, 0, 16777216, 529893887}}}, sin6_scope_id = 0}}
rt = (struct rtentry *) 0x0
dst = (struct sockaddr_in6 *) 0xd6593bd8
src_sa = {sin6_len = 28 '\034', sin6_family = 28 '\034',
sin6_port = 0, sin6_flowinfo = 0, sin6_addr = {__u6_addr = {
__u6_addr8 = "þ\200\000\000\000\000\000\000\002 Éÿþ\211\225\037",
__u6_addr16 = {33022, 0, 0, 0, 40962, 65481, 35326, 8085},
__u6_addr32 = {33022, 0, 4291403778, 529893886}}}, sin6_scope_id = 5}
dst_sa = {sin6_len = 28 '\034', sin6_family = 28 '\034',
sin6_port = 0, sin6_flowinfo = 0, sin6_addr = {__u6_addr = {
__u6_addr8 = "ÿ\002\000\000\000\000\000\000\000\000\000\001ÿ\211\225\037", __u6_addr16 = {767, 0, 0, 0, 0, 256, 35327, 8085}, __u6_addr32 = {767, 0,
16777216, 529893887}}}, sin6_scope_id = 5}
odst = {__u6_addr = {__u6_addr8 = "\000\000\000\000 ;YÖ*¾lÀ \027¤À",
__u6_addr16 = {0, 0, 15264, 54873, 48682, 49260, 6048, 49316},
__u6_addr32 = {0, 3596172192, 3228352042, 3231979424}}}
error = 0
ia = (struct in6_ifaddr *) 0x0
mtu = 1280
alwaysfrag = 0
dontfrag = 0
optlen = 0
plen = 0
unfragpartlen = 48
exthdrs = {ip6e_ip6 = 0xc3a61b00, ip6e_hbh = 0xc3a61900,
ip6e_dest1 = 0x0, ip6e_rthdr = 0x0, ip6e_dest2 = 0x0}
finaldst = {__u6_addr = {
__u6_addr8 = "ÿ\002\000\005\000\000\000\000\000\000\000\001ÿ\211\225\037",
__u6_addr16 = {767, 1280, 0, 0, 0, 256, 35327, 8085}, __u6_addr32 = {
83886847, 0, 16777216, 529893887}}}
src0 = {__u6_addr = {
__u6_addr8 = "þ\200\000\005\000\000\000\000\002 Éÿþ\211\225\037",
__u6_addr16 = {33022, 1280, 0, 0, 40962, 65481, 35326, 8085},
__u6_addr32 = {83919102, 0, 4291403778, 529893886}}}
dst0 = {__u6_addr = {
__u6_addr8 = "ÿ\002\000\005\000\000\000\000\000\000\000\001ÿ\211\225\037",
__u6_addr16 = {767, 1280, 0, 0, 0, 256, 35327, 8085}, __u6_addr32 = {
83886847, 0, 16777216, 529893887}}}
zone = 5
ro_pmtu = (struct route_in6 *) 0xd6593bd4
hdrsplit = 1
needipsec = 0
#8 0xc079dfee in mld6_sendpkt (in6m=0xc3a70d80, type=131, dst=0x0)
at /usr/src/sys/netinet6/mld6.c:525
mh = (struct mbuf *) 0xc3a61b00
md = (struct mbuf *) 0xc3a61a00
mldh = (struct mld_hdr *) 0xd6593c3c
ip6 = (struct ip6_hdr *) 0x0
im6o = {im6o_multicast_ifp = 0xc39a3800,
im6o_multicast_hlim = 1 '\001', im6o_multicast_loop = 0 '\0',
im6o_memberships = {lh_first = 0x0}}
ia = (struct in6_ifaddr *) 0xd6593c3c
ifp = (struct ifnet *) 0xc39a3800
outif = (struct ifnet *) 0xc39a3800
#9 0xc079d62c in mld_timeo (in6m=0xc3a70d80)
at /usr/src/sys/netinet6/mld6.c:181
No locals.
#10 0xc06c69a3 in softclock (dummy=0x0) at /usr/src/sys/kern/kern_timeout.c:290
c_func = (void (*)(void *)) 0xc079d5e0 <mld_timeo>
c_arg = (void *) 0xc3a70d80
c_mtx = (struct mtx *) 0xc0a417e0
c_flags = 6
c = (struct callout *) 0x0
bucket = (struct callout_tailq *) 0xcf0d8430
curticks = 49604
steps = -1062987808
depth = 1
mpcalls = 0
mtxcalls = 0
gcalls = 1
wakeup_cookie = -1062987808
#11 0xc06a0848 in ithread_execute_handlers (p=0xc3708624, ie=0xc3706480)
at /usr/src/sys/kern/kern_intr.c:684
ih = (struct intr_handler *) 0xc3739700
ihn = (struct intr_handler *) 0xc389ac40
#12 0xc06a09d3 in ithread_loop (arg=0xc36ec720)
at /usr/src/sys/kern/kern_intr.c:767
intr_event = (struct intr_thread *) 0xc36ec720
ie = (struct intr_event *) 0xc3706480
td = (struct thread *) 0xc3709a80
p = (struct proc *) 0xc3708624
__func__ = "ithread_loop"
#13 0xc069f591 in fork_exit (callout=0xc06a0950 <ithread_loop>, arg=0x0,
frame=0x0) at /usr/src/sys/kern/kern_fork.c:805
p = (struct proc *) 0xc3708624
td = (struct thread *) 0x0
#14 0xc08e3adc in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:208
No locals.
>Fix:
Unknown for me.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list