panic in _mtx_lock_sleep

From: Bryan Venteicher <mr.kodiak_at_gmail.com>
Date: Sat, 7 Jul 2007 15:59:24 -0500
I got this panic from about a day old current.

GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd".

Unread portion of the kernel message buffer:
kernel trap 12 with interrupts disabled


Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x258
fault code              = supervisor read data, page not present
instruction pointer     = 0x8:0xffffffff8028a71a
stack pointer           = 0x10:0xffffffffaf5896c0
frame pointer           = 0x10:0xffffffffaf5896f0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = resume, IOPL = 0
current process         = 1069 (gweather-applet-2)
panic: from debugger
cpuid = 0
Uptime: 23m45s
Physical memory: 2523 MB
Dumping 409 MB: 394 378 362 346 330 314 298 282 266 250 234 218 202 186 170
154 138 122 106 90 74 58 42 26 10

#0  doadump () at pcpu.h:194
194     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt
#0  doadump () at pcpu.h:194
#1  0xffffffff802951b6 in boot (howto=260) at
/usr/src/sys/kern/kern_shutdown.c:409
#2  0xffffffff8029562a in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:563
#3  0xffffffff8018d06c in db_panic (addr=Variable "addr" is not available.
) at /usr/src/sys/ddb/db_command.c:433
#4  0xffffffff8018d66c in db_command_loop () at
/usr/src/sys/ddb/db_command.c:401
#5  0xffffffff8018f24d in db_trap (type=Variable "type" is not available.
) at /usr/src/sys/ddb/db_main.c:222
#6  0xffffffff802bd2da in kdb_trap (type=12, code=0, tf=0xffffffffaf589610)
at /usr/src/sys/kern/subr_kdb.c:502
#7  0xffffffff804a4552 in trap_fatal (frame=0xffffffffaf589610, eva=Variable
"eva" is not available.
) at /usr/src/sys/amd64/amd64/trap.c:690
#8  0xffffffff804a52ac in trap (frame=0xffffffffaf589610) at
/usr/src/sys/amd64/amd64/trap.c:247
#9  0xffffffff8048bede in calltrap () at
/usr/src/sys/amd64/amd64/exception.S:169
#10 0xffffffff8028a71a in _mtx_lock_sleep (m=0xffffff0002637660,
tid=18446742974235165536, opts=Variable "opts" is not available.
)
    at /usr/src/sys/kern/kern_mutex.c:361
#11 0xffffffff80334334 in rt_check (lrt=0xffffffffaf589758,
lrt0=0xffffffffaf589748, dst=Variable "dst" is not available.
) at /usr/src/sys/net/route.c:1303
#12 0xffffffff80355255 in arpresolve (ifp=0xffffff0001150800,
rt0=0xffffff0002637870, m=0xffffff00020a5c00,
    dst=0xffffff0002110390, desten=0xffffffffaf5897c0 "\224\\\n\002") at
/usr/src/sys/netinet/if_ether.c:373
#13 0xffffffff8032c160 in ether_output (ifp=0xffffff0001150800,
m=0xffffff00020a5c00, dst=0xffffff0002110390, rt0=Variable "rt0" is not
available.
)
    at /usr/src/sys/net/if_ethersubr.c:175
#14 0xffffffff803643b8 in ip_output (m=0xffffff00020a5c00, opt=Variable
"opt" is not available.
) at /usr/src/sys/netinet/ip_output.c:547
#15 0xffffffff803c237e in udp_send (so=Variable "so" is not available.
) at /usr/src/sys/netinet/udp_usrreq.c:957
#16 0xffffffff802ebc4f in sosend_dgram (so=0xffffff004309b570, addr=0x0,
uio=Variable "uio" is not available.
) at /usr/src/sys/kern/uipc_socket.c:1053
#17 0xffffffff802ef5f7 in kern_sendit (td=0xffffff0002384360, s=24,
mp=0xffffffffaf589af0, flags=0, control=0x0, segflg=Variable "segflg" is not
available.
)
    at /usr/src/sys/kern/uipc_syscalls.c:806
#18 0xffffffff802f25fe in sendit (td=0xffffff0002384360, s=24,
mp=0xffffffffaf589af0, flags=0)
    at /usr/src/sys/kern/uipc_syscalls.c:746
#19 0xffffffff802f26e6 in sendto (td=Variable "td" is not available.
) at /usr/src/sys/kern/uipc_syscalls.c:860
#20 0xffffffff804a4b6e in syscall (frame=0xffffffffaf589c70) at
/usr/src/sys/amd64/amd64/trap.c:820
#21 0xffffffff8048c08b in Xfast_syscall () at
/usr/src/sys/amd64/amd64/exception.S:272
#22 0x0000000805497cdc in ?? ()
Previous frame inner to this frame (corrupt stack?)
(kgdb) up 11
#11 0xffffffff80334334 in rt_check (lrt=0xffffffffaf589758,
lrt0=0xffffffffaf589748, dst=Variable "dst" is not available.
) at /usr/src/sys/net/route.c:1303
1303                    RT_LOCK(rt);            /* NB: gwroute */
(kgdb) l
1298            /* XXX BSD/OS checks dst->sa_family != AF_NS */
1299            if (rt->rt_flags & RTF_GATEWAY) {
1300                    if (rt->rt_gwroute == NULL)
1301                            goto lookup;
1302                    rt = rt->rt_gwroute;
1303                    RT_LOCK(rt);            /* NB: gwroute */
1304                    if ((rt->rt_flags & RTF_UP) == 0) {
1305                            RTFREE_LOCKED(rt);      /* unlock gwroute */
1306                            rt = rt0;
1307                    lookup:
(kgdb) p *rt
$1 = {rt_nodes = {{rn_mklist = 0x0, rn_parent = 0xffffff00026375d0, rn_bit =
-1, rn_bmask = 0 '\0', rn_flags = 0 '\0', rn_u = {
        rn_leaf = {rn_Key = 0xffffff0038e84d00 "\020\002", rn_Mask = 0x0,
rn_Dupedkey = 0x0}, rn_node = {rn_Off = 954748160,
          rn_L = 0x0, rn_R = 0x0}}}, {rn_mklist = 0xffffff0002311060,
rn_parent = 0xffffff0002637990, rn_bit = 63,
      rn_bmask = 1 '\001', rn_flags = 0 '\0', rn_u = {rn_leaf = {rn_Key =
0x7 <Address 0x7 out of bounds>,
          rn_Mask = 0xffffff0002637960 "`\0201\002", rn_Dupedkey =
0xffffff00026375a0}, rn_node = {rn_Off = 7,
          rn_L = 0xffffff0002637960, rn_R = 0xffffff00026375a0}}}},
rt_gateway = 0xffffff0038e84d10, rt_flags = 131076,
  rt_ifp = 0xffffff0001150800, rt_ifa = 0xffffff0002680600, rt_rmx =
{rmx_mtu = 1500, rmx_expire = 1421, rmx_pksent = 0},
  rt_refcnt = 0, rt_genmask = 0x0, rt_llinfo = 0x0, rt_gwroute = 0x0,
rt_parent = 0x0, rt_mtx = {lock_object = {
      lo_name = 0xffffffff80503dda "rtentry", lo_type = 0xffffffff80503dda
"rtentry", lo_flags = 21102592, lo_witness_data = {
        lod_list = {stqe_next = 0x0}, lod_witness = 0x0}}, mtx_lock = 6,
mtx_recurse = 0}}
(kgdb) down 1
#10 0xffffffff8028a71a in _mtx_lock_sleep (m=0xffffff0002637660,
tid=18446742974235165536, opts=Variable "opts" is not available.
)
    at /usr/src/sys/kern/kern_mutex.c:361
361                     owner = (struct thread *)(v & ~MTX_FLAGMASK);
(kgdb) l
356     #ifdef ADAPTIVE_MUTEXES
357                     /*
358                      * If the current owner of the lock is executing on
another
359                      * CPU, spin instead of blocking.
360                      */
361                     owner = (struct thread *)(v & ~MTX_FLAGMASK);
362     #ifdef ADAPTIVE_GIANT
363                     if (TD_IS_RUNNING(owner))
364     #else
365                     if (m != &Giant && TD_IS_RUNNING(owner))
(kgdb) p *m
$2 = {lock_object = {lo_name = 0xffffffff80503dda "rtentry", lo_type =
0xffffffff80503dda "rtentry", lo_flags = 21102592,
    lo_witness_data = {lod_list = {stqe_next = 0x0}, lod_witness = 0x0}},
mtx_lock = 6, mtx_recurse = 0}
(kgdb) p v
$3 = 6
Received on Sat Jul 07 2007 - 19:27:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:13 UTC