I am having a problem with one of my freebsd 7.2R boxes panicing on
start of devd after upgrading to 7.2R. It is an old DELL 2400 dual
processor. This is a build from completely refreshed sources.
- generic kernel does not panic (built by me)
- custom kernel does not panic with devd_enable="NO" set in rc.conf,
but
!!! __ I can start devd AFTER booting by hand at the command prompt!
- custom kernel (carp and more memory ) does panic if devd is started
automatically by rc.d scripts (the default behaviour).
Do I really need devd for anything if I am not using USB? Anyone have
any idea of how to fix this?
My kernel config is pretty simple, I am building a test i386 box with a
carp kernel to try and repro this on another box, but that box is really
slow.
After booting I just run
kes# devd
devd: Setting hw.bus.devctl_disable to 0
kes#
And it does NOT panic!!!! Weird huh?
kernel config folled by back trace
----------------------------------------------------------------------------------------------------
#
# SMP -- Generic kernel configuration file for FreeBSD/i386 SMP
# Use this for multi-processor machines
#
# $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $
include GENERIC
ident WHI
# To make an SMP kernel, the next line is needed
#options SMP # Symmetric MultiProcessor Kernel
#options ASR_COMPAT
options MAXDSIZ="(1536*1024*1024)"
options MAXSSIZ="(512*1024*1024)"
options DFLDSIZ="(1536*1024*1024)"
device carp
kes#
----------------------------------------------------------------------------------------------------
kgdb back trace of core here
118>
<118>#
<118>Loading configuration files.
<118>kernel dumps on /dev/da0s1b
<118>Entropy harvesting:
<118> interrupts
<118> ethernet
<118> point_to_point
<118> kickstart
<118>.
<118>swapon: adding /dev/da0s1b as swap device
<118>Fast boot: skipping disk checks.
GEOM_LABEL: Label for provider da0s1f is ufsid/3ec3641041d090a9.
<118>Setting hostuuid: 44454c4c-5a9b-1059-8057-b8c04f303031.
<118>Setting hostid: 0xd1c205d3.
<118>Mounting local file systems:
GEOM_LABEL: Label ufsid/3ec3641041d090a9 removed.
WARNING: /usr was not properly dismounted
WARNING: /var was not properly dismounted
<118>.
<118>Setting hostname: kes.icarz.com.
<118>net.inet6.ip6.auto_linklocal:
<118>1
<118> ->
<118>0
<118>
<118>kern.maxfilesperproc:
<118>11095
<118> ->
<118>19000
<118>
<118>kern.maxfiles:
<118>12328
<118> ->
<118>20000
<118>
<118>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu
16384
<118> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
<118> inet6 ::1 prefixlen 128
<118> inet 127.0.0.1 netmask 0xff000000
<118>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric
0
mtu 1500
<118> options=2009<RXCSUM,VLAN_MTU,WOL_MAGIC>
<118> ether 00:b0:d0:3e:c7:19
<118> inet 207.99.22.32 netmask 0xffffff80 broadcast 207.99.22.127
<118> media: Ethernet autoselect (100baseTX <full-duplex>)
<118> status: active
<118>add net default: gateway 207.99.22.1
<118>Additional routing options:
<118>.
<118>Starting devd.
Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 00
fault virtual address = 0x0
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc0874488
stack pointer = 0x28:0xf7bd0b68
frame pointer = 0x28:0xf7bd0b68
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 388 (devd)
trap number = 12
panic: page fault
cpuid = 1
Uptime: 2m12s
Physical memory: 2035 MB
Dumping 68 MB: 53 37 21 5
Reading symbols from /boot/kernel/acpi.ko...Reading symbols from
/boot/kernel/acpi.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/acpi.ko
#0 doadump () at pcpu.h:196
196 __asm __volatile("movl %%fs:0,%0" : "=r"
(td));
(kgdb) backtrace
#0 doadump () at pcpu.h:196
#1 0xc07e2a07 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
#2 0xc07e2cd9 in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:574
#3 0xc0ae895c in trap_fatal (frame=0xf7bd0b28, eva=0)
at /usr/src/sys/i386/i386/trap.c:939
#4 0xc0ae8be0 in trap_pfault (frame=0xf7bd0b28, usermode=0, eva=0)
at /usr/src/sys/i386/i386/trap.c:852
#5 0xc0ae958c in trap (frame=0xf7bd0b28) at
/usr/src/sys/i386/i386/trap.c:530
#6 0xc0acdc9b in calltrap () at /usr/src/sys/i386/i386/exception.s:159
#7 0xc0874488 in strlen (str=0x0) at /usr/src/sys/libkern/strlen.c:41
#8 0xc080a46c in devread (dev=0xc548b900, uio=0xf7bd0c60, ioflag=0)
at /usr/src/sys/kern/subr_bus.c:458
#9 0xc07a6039 in giant_read (dev=0xc548b900, uio=0xf7bd0c60, ioflag=0)
at /usr/src/sys/kern/kern_conf.c:414
#10 0xc076cecd in devfs_read_f (fp=0xc58ba260, uio=0xf7bd0c60,
cred=0xc5470300, flags=0, td=0xc56288c0)
at /usr/src/sys/fs/devfs/devfs_vnops.c:1007
#11 0xc081be86 in dofileread (td=0xc56288c0, fd=3, fp=0xc58ba260,
auio=0xf7bd0c60, offset=-1, flags=0) at file.h:245
#12 0xc081c1f8 in kern_readv (td=0xc56288c0, fd=3, auio=0xf7bd0c60)
at /usr/src/sys/kern/sys_generic.c:193
#13 0xc081c2df in read (td=0xc56288c0, uap=0xf7bd0cfc)
at /usr/src/sys/kern/sys_generic.c:109
---Type <return> to continue, or q <return> to quit---
#14 0xc0ae8f35 in syscall (frame=0xf7bd0d38)
at /usr/src/sys/i386/i386/trap.c:1090
#15 0xc0acdd00 in Xint0x80_syscall () at
/usr/src/sys/i386/i386/exception.s:255
#16 0x00000033 in ?? ()
Previous frame inner to this frame (corrupt stack?)
(kgdb)
On Fri, May 22, 2009 at 03:26:51PM -0400, Ken Menzel wrote:> > I am having a problem with one of my freebsd 7.2R boxes panicing on > start of devd after upgrading to 7.2R. It is an old DELL 2400 dual > processor. This is a build from completely refreshed sources. > > - generic kernel does not panic (built by me) > - custom kernel does not panic with devd_enable="NO" set in rc.conf, but > !!! __ I can start devd AFTER booting by hand at the command prompt! > > - custom kernel (carp and more memory ) does panic if devd is started > automatically by rc.d scripts (the default behaviour). > > Do I really need devd for anything if I am not using USB? Anyone have > any idea of how to fix this? > > My kernel config is pretty simple, I am building a test i386 box with a > carp kernel to try and repro this on another box, but that box is really > slow. > > After booting I just run > kes# devd > devd: Setting hw.bus.devctl_disable to 0 > kes#...> <118>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 > <118> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 > <118> inet6 ::1 prefixlen 128 > <118> inet 127.0.0.1 netmask 0xff000000 > <118>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 > mtu 1500 > <118> options=2009<RXCSUM,VLAN_MTU,WOL_MAGIC> > <118> ether 00:b0:d0:3e:c7:19 > <118> inet 207.99.22.32 netmask 0xffffff80 broadcast 207.99.22.127 > <118> media: Ethernet autoselect (100baseTX <full-duplex>) > <118> status: active > <118>add net default: gateway 207.99.22.1 > <118>Additional routing options: > <118>. > <118>Starting devd. > > > Fatal trap 12: page fault while in kernel mode > cpuid = 1; apic id = 00 > fault virtual address = 0x0 > fault code = supervisor read, page not present > instruction pointer = 0x20:0xc0874488 > stack pointer = 0x28:0xf7bd0b68 > frame pointer = 0x28:0xf7bd0b68 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, def32 1, gran 1 > processor eflags = interrupt enabled, resume, IOPL = 0 > current process = 388 (devd) > trap number = 12 > panic: page fault > cpuid = 1 > Uptime: 2m12s > Physical memory: 2035 MB > Dumping 68 MB: 53 37 21 5 > > Reading symbols from /boot/kernel/acpi.ko...Reading symbols from > /boot/kernel/acpi.ko.symbols...done. > done. > Loaded symbols for /boot/kernel/acpi.ko > #0 doadump () at pcpu.h:196 > 196 __asm __volatile("movl %%fs:0,%0" : "=r" (td)); > (kgdb) backtrace > #0 doadump () at pcpu.h:196 > #1 0xc07e2a07 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418 > #2 0xc07e2cd9 in panic (fmt=Variable "fmt" is not available. > ) at /usr/src/sys/kern/kern_shutdown.c:574 > #3 0xc0ae895c in trap_fatal (frame=0xf7bd0b28, eva=0) > at /usr/src/sys/i386/i386/trap.c:939 > #4 0xc0ae8be0 in trap_pfault (frame=0xf7bd0b28, usermode=0, eva=0) > at /usr/src/sys/i386/i386/trap.c:852 > #5 0xc0ae958c in trap (frame=0xf7bd0b28) at > /usr/src/sys/i386/i386/trap.c:530 > #6 0xc0acdc9b in calltrap () at /usr/src/sys/i386/i386/exception.s:159 > #7 0xc0874488 in strlen (str=0x0) at /usr/src/sys/libkern/strlen.c:41 > #8 0xc080a46c in devread (dev=0xc548b900, uio=0xf7bd0c60, ioflag=0) > at /usr/src/sys/kern/subr_bus.c:458 > #9 0xc07a6039 in giant_read (dev=0xc548b900, uio=0xf7bd0c60, ioflag=0) > at /usr/src/sys/kern/kern_conf.c:414 > #10 0xc076cecd in devfs_read_f (fp=0xc58ba260, uio=0xf7bd0c60, > cred=0xc5470300, flags=0, td=0xc56288c0) > at /usr/src/sys/fs/devfs/devfs_vnops.c:1007 > #11 0xc081be86 in dofileread (td=0xc56288c0, fd=3, fp=0xc58ba260, > auio=0xf7bd0c60, offset=-1, flags=0) at file.h:245 > #12 0xc081c1f8 in kern_readv (td=0xc56288c0, fd=3, auio=0xf7bd0c60) > at /usr/src/sys/kern/sys_generic.c:193 > #13 0xc081c2df in read (td=0xc56288c0, uap=0xf7bd0cfc) > at /usr/src/sys/kern/sys_generic.c:109 > ---Type <return> to continue, or q <return> to quit--- > #14 0xc0ae8f35 in syscall (frame=0xf7bd0d38) > at /usr/src/sys/i386/i386/trap.c:1090 > #15 0xc0acdd00 in Xint0x80_syscall () at > /usr/src/sys/i386/i386/exception.s:255 > #16 0x00000033 in ?? () > Previous frame inner to this frame (corrupt stack?) > (kgdb)The strlen was supplied NULL pointer. This means that n1->dei_data is NULL. Brief looking over the RELENG_7 code does not reveal any caller of devctl_queue_data outside subr_bus.c, and all uses inside subr_bus.c seems to be safe. Added options in the config cannot affect this behaviour, I believe. You may add check at the start of the devctl_queue_data() to verify that data != NULL, and panic when it is. This way, we will see where it happen. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20090522/605cf16a/attachment.pgp