Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 May 2010 08:51:34 -0700 (PDT)
From:      Nick Johnson <frebsd@spatula.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/146708: Kernel panic in softdep_disk_write_complete 
Message-ID:  <20100518155134.9CA521701D@turing.morons.org>
Resent-Message-ID: <201005181620.o4IGK2im049831@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         146708
>Category:       kern
>Synopsis:       Kernel panic in softdep_disk_write_complete
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue May 18 16:20:02 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Nick Johnson
>Release:        FreeBSD 8.0-STABLE i386
>Organization:
morons.org 
>Environment:
System: FreeBSD turing.morons.org 8.0-STABLE FreeBSD 8.0-STABLE #0: Tue May 4 21:21:27 PDT 2010 root@turing.morons.org:/usr/src/sys/i386/compile/TURING.8 i386


	
>Description:
Kernel panic while g_up is running.  output from kgdb:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0xeb13
fault code              = supervisor write, page not present
instruction pointer     = 0x20:0xc07b88dc
stack pointer           = 0x28:0xc55c5bc4
frame pointer           = 0x28:0xc55c5c3c
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         = 3 (g_up)
trap number             = 12
panic: page fault
cpuid = 0
Uptime: 12d20h13m41s
Physical memory: 2030 MB
Dumping 290 MB: 275 259 243 227 211 195 179 163 147 131 115 99 83 67 51 35 19 3

Reading symbols from /boot/kernel/if_bge.ko...Reading symbols from /boot/kernel/if_bge.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/if_bge.ko
#0  doadump () at pcpu.h:246
246     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt
#0  doadump () at pcpu.h:246
#1  0xc05e4fa7 in boot (howto=260) at ../../../kern/kern_shutdown.c:416
#2  0xc05e52e7 in panic (fmt=Variable "fmt" is not available.
) at ../../../kern/kern_shutdown.c:579
#3  0xc0849b03 in trap_fatal (frame=0xc55c5b84, eva=60179) at ../../../i386/i386/trap.c:938
#4  0xc0849d6b in trap_pfault (frame=0xc55c5b84, usermode=0, eva=60179) at ../../../i386/i386/trap.c:851
#5  0xc084a743 in trap (frame=0xc55c5b84) at ../../../i386/i386/trap.c:533
#6  0xc082bd8b in calltrap () at ../../../i386/i386/exception.s:165
#7  0xc07b88dc in softdep_disk_write_complete (bp=0xd9acc610) at ../../../ufs/ffs/ffs_softdep.c:4311
#8  0xc07bf3e7 in ffs_backgroundwritedone (bp=0xd9acc610) at buf.h:411
#9  0xc065db83 in bufdone (bp=0xd9acc610) at ../../../kern/vfs_bio.c:3255
#10 0xc0583a24 in g_vfs_done (bip=0xc8d78118) at ../../../geom/geom_vfs.c:97
#11 0xc0657fe9 in biodone (bp=0xc8d78118) at ../../../kern/vfs_bio.c:3096
#12 0xc0580dcf in g_io_schedule_up (tp=0xc59884a0) at ../../../geom/geom_io.c:675
#13 0xc0581178 in g_up_procbody () at ../../../geom/geom_kern.c:95
#14 0xc05b9b2d in fork_exit (callout=0xc0581110 <g_up_procbody>, arg=0x0, frame=0xc55c5d38) at ../../../kern/kern_fork.c:843
#15 0xc082be00 in fork_trampoline () at ../../../i386/i386/exception.s:270

(kgdb) frame 7
#7  0xc07b88dc in softdep_disk_write_complete (bp=0xd9acc610) at ../../../ufs/ffs/ffs_softdep.c:4311
4311                                    LIST_REMOVE(aip, ai_deps);
(kgdb) list
4306                            }
4307                            while ((aip =
4308                                LIST_FIRST(&bmsafemap->sm_allocindirhd))) {
4309                                    aip->ai_state |= DEPCOMPLETE;
4310                                    aip->ai_buf = NULL;
4311                                    LIST_REMOVE(aip, ai_deps);
4312                                    handle_allocindir_partdone(aip);
4313                            }
4314                            while ((inodedep =
4315                                 LIST_FIRST(&bmsafemap->sm_inodedephd)) != NULL) {

(kgdb) print aip
$1 = (struct allocindir *) 0xc66c9800
(kgdb) print *aip
$2 = {ai_list = {wk_mp = 0x30006508, wk_list = {le_next = 0x1db68348, le_prev = 0x5a483000}, wk_type = 59611, wk_state = 8},
  ai_next = {le_next = 0x34000045, le_prev = 0xc72e919c}, ai_offset = -1347025361, ai_newblkno = 1688651571895859522,
  ai_oldblkno = 8055935644368671472, ai_freefrag = 0x21f924bd, ai_indirdep = 0xc6011080, ai_deps = {le_next = 0xeadb,
    le_prev = 0xcb8794d8}, ai_buf = 0x0}


	
>How-To-Repeat:
Unknown; crash was seemingly random at 4:04 AM when no cron jobs were running and the system was under minimal activity and load.

Seems to be disk IO related; partitions are all mounted with noatime, and this is a disk that was first created under
FreeBSD 6 and later upgraded to FreeBSD 8, in case either of those might matter.

	
>Fix:
Unknown.
	


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100518155134.9CA521701D>