Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 May 2002 18:25:45 +0200
From:      Robert Lillack <rob@lillack.de>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/37889: kernel panic when writing to a FAT32 partition
Message-ID:  <20020509182545.2a12c5c4.rob@lillack.de>

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

>Number:         37889
>Category:       kern
>Synopsis:       kernel panic when writing to a FAT32 partition
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 09 09:30:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Robert Lillack <rob@lillack.de>
>Release:        FreeBSD 4.6-PRERELEASE i386
>Organization:
none
>Environment:
System: FreeBSD sickbox.partywg.home 4.6-PRERELEASE FreeBSD 4.6-PRERELEASE
#4: Thu May 9 15:55:13 CEST 2002 root@sickbox

the problematic FAT32 partition /dev/ad0s6:

    start 4176900, size 20643525 (10079 Meg), flag 0
        beg: cyl 584/ head 0/ sector 1;
        end: cyl 1023/ head 254/ sector 63

it is mounted writable on /mnt/dose

>Description:
When trying to write (mkdir/rm/...) to that partition, the system crashes.
Reading works. Other operating systems work. fsck_msdosfs finds no errors.
Other (smaller) FAT32 partitions on the same hard disk work.

The gdb output after the system crashed when i tried to create a directory
"test" in the root directory of that partition looks like this:

 [root@sickbox:/usr/src/sys/compile/SICKBOX] gdb -k kernel.debug
 /var/crash/vmcore.0 GNU gdb 4.18
 Copyright 1998 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-unknown-freebsd"...
 IdlePTD at phsyical address 0x0041b000
 initial pcb at physical address 0x00306f40
 panicstr: page fault
 panic messages:
 ---
 Fatal trap 12: page fault while in kernel mode
 fault virtual address   = 0xe1bd8ffc
 fault code              = supervisor read, page not present
 instruction pointer     = 0x8:0xc01a58e7
 stack pointer           = 0x10:0xd5986cdc
 frame pointer           = 0x10:0xd5986cec
 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         = 298 (mkdir)
 interrupt mask          = none
 trap number             = 12
 panic: page fault

 syncing disks... 15 9 6 4 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
 giving up on 1 buffers
 Uptime: 5m2s

 dumping to dev #ad/0x20009, offset 7840
 dump ata0: resetting devices .. ad0: DMA limited to UDMA33, non-ATA66
 cable or device done

[CUT OUT: counting down]

 ---
 #0  dumpsys () at ../../kern/kern_shutdown.c:487
 487             if (dumping++) {
 (kgdb) where
 #0  dumpsys () at ../../kern/kern_shutdown.c:487
 #1  0xc016a6f3 in boot (howto=256) at ../../kern/kern_shutdown.c:316
 #2  0xc016ab18 in poweroff_wait (junk=0xc02c2d8c, howto=-1070847825)
     at ../../kern/kern_shutdown.c:595
 #3  0xc027d02a in trap_fatal (frame=0xd5986c9c, eva=3787296764)
     at ../../i386/i386/trap.c:966
 #4  0xc027ccfd in trap_pfault (frame=0xd5986c9c, usermode=0,
 eva=3787296764)    at ../../i386/i386/trap.c:859
 #5  0xc027c8e7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, 
      tf_edi = 7792, tf_esi = -1044541440, tf_ebp = -711430932, 
      tf_isp = -711430968, tf_ebx = -1044545536, tf_edx = 134217727, 
      tf_ecx = 31, tf_eax = -2147483648, tf_trapno = 12, tf_err = 0, 
      tf_eip = -1072015129, tf_cs = 8, tf_eflags = 68246, tf_esp =
 268435455,       tf_ss = 268435455}) at ../../i386/i386/trap.c:458
 #6  0xc01a58e7 in updatefats (pmp=0xc1bd8000, bp=0xcc18123c, fatbn=7792)
     at ../../msdosfs/msdosfs_fat.c:353
 #7  0xc01a5f46 in fatchain (pmp=0xc1bd8000, start=994187, count=0, 
     fillwith=4294967295) at ../../msdosfs/msdosfs_fat.c:674
 #8  0xc01a6065 in chainalloc (pmp=0xc1bd8000, start=994186, count=1, 
     fillwith=4294967295, retcluster=0xd5986dc4, got=0x0)
     at ../../msdosfs/msdosfs_fat.c:748
 #9  0xc01a6262 in clusteralloc (pmp=0xc1bd8000, start=0, count=1, 
     fillwith=4294967295, retcluster=0xd5986dc4, got=0x0)
     at ../../msdosfs/msdosfs_fat.c:842
 #10 0xc01aa581 in msdosfs_mkdir (ap=0xd5986e6c)
     at ../../msdosfs/msdosfs_vnops.c:1368
 #11 0xc019d632 in mkdir (p=0xd5953ac0, uap=0xd5986f80) at vnode_if.h:674
 #12 0xc027d2d9 in syscall2 (frame={tf_fs = 47, tf_es = 47, tf_ds = 47, 
      tf_edi = 511, tf_esi = 1, tf_ebp = -1077937264, tf_isp = -711430188,
      tf_ebx = -1077937176, tf_edx = 0, tf_ecx = 0, tf_eax = 136, 
      tf_trapno = 12, tf_err = 2, tf_eip = 134516968, tf_cs = 31, 
      tf_eflags = 663, tf_esp = -1077937324, tf_ss = 47})
     at ../../i386/i386/trap.c:1167
 #13 0xc0271185 in Xint0x80_syscall ()
 #14 0x8048135 in ?? ()
 (kgdb) up 6
 #6  0xc01a58e7 in updatefats (pmp=0xc1bd8000, bp=0xcc18123c, fatbn=7792)
     at ../../msdosfs/msdosfs_fat.c:353
 353                     if (pmp->pm_freeclustercount

For more information, please mail me.

>How-To-Repeat:
On that machine particular machine, every try to write to the filesystem
crashes the system again.

cd /mnt/dose
mkdir test

*** BANG ****

After rebooting the directory "test" is not there.

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

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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