kern/55191: frequent kernel page faults on MCLGET()s
Matt Fredette
fredette at theory.lcs.mit.edu
Sat Aug 2 12:20:08 PDT 2003
>Number: 55191
>Category: kern
>Synopsis: frequent kernel page faults on MCLGET()s
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Aug 02 12:20:06 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Matt Fredette
>Release: FreeBSD 4.8-RELEASE i386
>Organization:
self
>Environment:
System: FreeBSD no-quarter.home 4.8-RELEASE FreeBSD 4.8-RELEASE #1: Thu Jul 31 16:36:00 EDT 2003 fredette at no-quarter.home:/data/home/fredette/sys/compile/NO-QUARTER i386
Copyright (c) 1992-2003 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 4.8-RELEASE #1: Thu Jul 31 16:36:00 EDT 2003
fredette at no-quarter.home:/data/home/fredette/sys/compile/NO-QUARTER
Timecounter "i8254" frequency 1193182 Hz
CPU: Pentium II/Pentium II Xeon/Celeron (233.14-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x634 Stepping = 4
Features=0x80f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,MMX>
real memory = 301989888 (294912K bytes)
avail memory = 290025472 (283228K bytes)
Preloaded elf kernel "kernel" at 0xc035b000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc035b09c.
Pentium Pro MTRR support enabled
md0: Malloc disk
Using $PIR table, 7 entries at 0xc00fde80
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Intel 82443LX (440 LX) host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
agp0: <Intel 82443LX (440 LX) host to PCI bridge> mem 0xf8000000-0xfbffffff at device 0.0 on pci0
pcib1: <Intel 82443LX (440 LX) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
isab0: <Intel 82371AB PCI to ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 ATA33 controller> port 0xfcd0-0xfcdf at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <Intel 82371AB/EB (PIIX4) USB controller> port 0xfce0-0xfcff irq 9 at device 7.2 on pci0
usb0: <Intel 82371AB/EB (PIIX4) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
chip0: <Intel 82371AB Power management controller> port 0x7000-0x700f at device 7.3 on pci0
pci0: <Rendition Verite V2000 SVGA controller> at 14.0 irq 11
xl0: <3Com 3c905C-TX Fast Etherlink XL> port 0xfc00-0xfc7f mem 0xfedbfc00-0xfedbfc7f irq 9 at device 16.0 on pci0
xl0: Ethernet address: 00:50:da:ce:e9:b7
miibus0: <MII bus> on xl0
xlphy0: <3c905C 10/100 internal PHY> on miibus0
xlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
orm0: <Option ROMs> at iomem 0xc8000-0xc87ff,0xe0000-0xe3fff,0xe4000-0xeffff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x100>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A, console
sio1: configured irq 3 not in bitmap of probed irqs 0
ppc0: parallel port not found.
ad0: 3244MB <SAMSUNG VG33402A (3.40GB)> [6591/16/63] at ata0-master UDMA33
acd0: CDROM <FX162T4> at ata0-slave PIO3
Mounting root from ufs:/dev/ad0s1a
>Description:
Once or more per day this machine gets kernel page faults while running
galeon from the galeon2-1.3.2_1 package.
I have traces of five crashes. Four of them look like this:
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0xc0beb948
fault code = supervisor write, page not present
instruction pointer = 0x8:0xc0180567
stack pointer = 0x10:0xd29b8e2c
frame pointer = 0x10:0xd29b8e50
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 = 127 (galeon-bin)
interrupt mask = net tty
kernel: type 12 trap, code=0
Stopped at sosend+0x443: incb 0(%eax,%edx,1)
db> tr
sosend(d1c2dd00,0,d29b8f08,0,0) at sosend+0x443
soo_write(c1515880,d29b8f08,c146fc00,0,cd10f8a0) at soo_write+0x24
writev(cd10f8a0,d29b8f80,28cf4e4c,28cf0280,0) at writev+0x188
syscall2(813002f,2f,bfbf002f,0,28cf0280) at syscall2+0x1f5
Xint0x80_syscall() at Xint0x80_syscall+0x25
The other one looks like this:
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0xc0cc25d4
fault code = supervisor write, page not present
instruction pointer = 0x8:0xc0201da3
stack pointer = 0x10:0xc02b7004
frame pointer = 0x10:0xc02b7010
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 = Idle
interrupt mask = net tty
kernel: type 12 trap, code=0
Stopped at xl_newbuf+0x103: incb 0(%eax,%edx,1)
db> tr
xl_newbuf(c13ae000,c13ae344) at xl_newbuf+0x103
xl_rxeof(c13ae000) at xl_rxeof+0x7e
xl_intr(c13ae000,660200,0,0,c02b70b8) at xl_intr+0x7c
intr_mux(c0b67920,0,10,10,400010) at intr_mux+0x1d
Xresume9() at Xresume9+0x2b
--- interrupt, eip = 0xc0262dd2, esp = 0xc02b70b0, ebp = 0xc02b70b8 ---
cpu_idle(e,634,2,80f9ff,0) at cpu_idle+0xe
idle_loop() at idle_loop+0x1d
Unfortunately I'm not in a position to remotely kgdb this, and swap is too
small for a dump. I can tell you that in my kernel, sosend+0x443 is line
567 of kern/uipc_socket.c (revision 1.68.2.22), and xl_newbuf+0x103 is line
1817 of pci/if_xl.c (revision 1.72.2.25).
Both lines are MCLGET()s.
GENERIC also crashes on this machine. I assume it's the same bug.
This might be related to some of the following:
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/30952
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/42260
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/53717
http://lists.freebsd.org/pipermail/freebsd-current/2003-May/002215.html
Could this be an xl bug, in the card and/or in the FreeBSD driver,
triggered by the amount of memory in the machine? Maybe software or
hardware attempts to DMA to high physical memory are going wrong?
>How-To-Repeat:
Can't be easily reproduced, seems to happen randomly.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list