threads/132215: Crash after running ppp
John Baldwin
jhb at freebsd.org
Mon Mar 2 08:20:03 PST 2009
The following reply was made to PR kern/132215; it has been noted by GNATS.
From: John Baldwin <jhb at freebsd.org>
To: freebsd-threads at freebsd.org
Cc: Stephane Legrand <stephleg at free.fr>, freebsd-gnats-submit at freebsd.org,
rwatson at freebsd.org
Subject: Re: threads/132215: Crash after running ppp
Date: Mon, 2 Mar 2009 11:11:32 -0500
On Sunday 01 March 2009 4:56:21 am Stephane Legrand wrote:
>
> >Number: 132215
> >Category: threads
> >Synopsis: Crash after running ppp
> >Confidential: no
> >Severity: serious
> >Priority: low
> >Responsible: freebsd-threads
> >State: open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class: sw-bug
> >Submitter-Id: current-users
> >Arrival-Date: Sun Mar 01 10:00:09 UTC 2009
> >Closed-Date:
> >Last-Modified:
> >Originator: Stephane Legrand
> >Release: 7.1-STABLE
> >Organization:
> >Environment:
> 7.1-STABLE i386
> >Description:
> Hi,
>
> After trying to update my system to the 7.1-STABLE of 28th february 2009,
when i run ppp, it crashes the system. Here is the backtrace :
>
> sequoia# kgdb kernel.debug /var/crash/vmcore.0
> 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 "i386-marcel-freebsd"...
>
> Unread portion of the kernel message buffer:
> Sleeping thread (tid 100053, pid 516) owns a non-sleepable lock
> panic: sleeping thread
> cpuid = 0
> Uptime: 37s
> Physical memory: 1002 MB
> Dumping 158 MB: 143 127 111 95 79 63 47 31 15
>
> Reading symbols from /boot/kernel/linprocfs.ko...Reading symbols
from /boot/kernel/linprocfs.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/linprocfs.ko
> Reading symbols from /boot/kernel/linux.ko...Reading symbols
from /boot/kernel/linux.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/linux.ko
> Reading symbols from /boot/kernel/linsysfs.ko...Reading symbols
from /boot/kernel/linsysfs.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/linsysfs.ko
> Reading symbols from /boot/kernel/snd_hda.ko...Reading symbols
from /boot/kernel/snd_hda.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/snd_hda.ko
> Reading symbols from /boot/kernel/sound.ko...Reading symbols
from /boot/kernel/sound.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/sound.ko
> Reading symbols from /boot/kernel/acpi.ko...Reading symbols
from /boot/kernel/acpi.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/acpi.ko
> Reading symbols from /boot/kernel/netgraph.ko...Reading symbols
from /boot/kernel/netgraph.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/netgraph.ko
> Reading symbols from /boot/kernel/ng_ether.ko...Reading symbols
from /boot/kernel/ng_ether.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/ng_ether.ko
> Reading symbols from /boot/kernel/ng_pppoe.ko...Reading symbols
from /boot/kernel/ng_pppoe.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/ng_pppoe.ko
> Reading symbols from /boot/kernel/ng_socket.ko...Reading symbols
from /boot/kernel/ng_socket.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/ng_socket.ko
> Reading symbols from /boot/kernel/ipfw.ko...Reading symbols
from /boot/kernel/ipfw.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/ipfw.ko
> Reading symbols from /usr/local/modules/fuse.ko...done.
> Loaded symbols for /usr/local/modules/fuse.ko
> Reading symbols from /boot/kernel/accf_http.ko...Reading symbols
from /boot/kernel/accf_http.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/accf_http.ko
> Reading symbols from /boot/kernel/i915.ko...done.
> Loaded symbols for /boot/kernel/i915.ko
> Reading symbols from /boot/kernel/drm.ko...done.
> Loaded symbols for /boot/kernel/drm.ko
> #0 doadump () at pcpu.h:196
> 196 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
> (kgdb) bt
> #0 doadump () at pcpu.h:196
> #1 0xc075c6df in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
> #2 0xc075c9a4 in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:574
> #3 0xc078eeec in propagate_priority (td=0xc444a690)
at /usr/src/sys/kern/subr_turnstile.c:222
> #4 0xc078fd11 in turnstile_wait (ts=0xc4260e60, owner=0xc444a690,
queue=Variable "queue" is not available.
> ) at /usr/src/sys/kern/subr_turnstile.c:740
> #5 0xc074f6b3 in _mtx_lock_sleep (m=0xc4267e7c, tid=3297722368, opts=0,
file=0x0, line=0)
> at /usr/src/sys/kern/kern_mutex.c:420
Can you do something like this in kgdb:
frame 5
set $td = (struct thread *)(m->mtx_lock & ~3)
p $td->td_tid
(This should print out a thread ID)
thread $td->td_tid
where
This should give you the stack trace of the misbehaving thread which slept
while holding a route lock.
Also, this is a kernel bug, not a thread issue.
--
John Baldwin
More information about the freebsd-bugs
mailing list