Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Dec 2005 02:51:10 GMT
From:      "Ricardo A. Reis" <ricardo.areis@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/90582: [geom_mirror] Restore cause panic string (ffs_blkfree)
Message-ID:  <200512180251.jBI2pAAC006550@www.freebsd.org>
Resent-Message-ID: <200512180300.jBI30FKs097476@freefall.freebsd.org>

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

>Number:         90582
>Category:       kern
>Synopsis:       [geom_mirror] Restore cause panic string (ffs_blkfree)
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Dec 18 03:00:14 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Ricardo A. Reis
>Release:        FreeBSD 7.0-CURRENT-SNAP010
>Organization:
UNIFESP
>Environment:
FreeBSD myfreebsd.homeunix.org 7.0-CURRENT-SNAP010 FreeBSD 7.0-CURRENT-SNAP010 #0: Tue Dec 13 11:25:44 UTC 2005     root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
      
>Description:
        After create a mirror with gmirror,i resolve reboot the system with this my workstation failed with "uname to mount root", because i not write in loader.conf geom_mirror_load=yes, 

for test i use gmirror load  and mount gm0 on /mnt, per unknown reason  boot.cfg not exist in  mirror/gm0, for this i repeat a session  "dump and restore. " in handbook.


-----------------------------------------------------------------------------
 cat /usr/crash/info.7 
Password:
Dump header from device /dev/ad2s1b
  Architecture: i386
  Architecture Version: 2
  Dump Length: 200867840B (191 MB)
  Blocksize: 512
  Dumptime: Sat Dec 17 21:44:53 2005
  Hostname: myfreebsd.homeunix.org
  Magic: FreeBSD Kernel Dump
  Version String: FreeBSD 7.0-CURRENT-SNAP010 #0: Tue Dec 13 11:25:44 UTC 2005
    root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
  Panic String: ffs_blkfree: freeing free frag
  Dump Parity: 2246706274
  Bounds: 7
  Dump Status: good

----------------------------------------------------------------------

kgdb kernel.symbols /usr/crash/vmcore.7 
Password:
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]
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:
g_vfs_done():mirror/gm0[READ(offset=18014398509481984, length=16384)]error = 5
dev = mirror/gm0, block = 2048, fs = /tmp
panic: ffs_blkfree: freeing free frag
cpuid = 0
KDB: enter: panic
panic: from debugger
cpuid = 0
Uptime: 10m59s
GEOM_MIRROR: Device gm0: provider mirror/gm0 destroyed.
GEOM_MIRROR: Device gm0 destroyed.
Dumping 191 MB (2 chunks)
  chunk 0: 1MB (159 pages) ... ok
  chunk 1: 191MB (48880 pages) 175 159 143 127 111 95 79 63 47 31 15

#0  doadump () at pcpu.h:165
165     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt full
#0  doadump () at pcpu.h:165
No locals.
#1  0xc064f09c in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:399
        first_buf_printf = 1
#2  0xc064f3b1 in panic (fmt=0xc0842e0b "from debugger") at /usr/src/sys/kern/kern_shutdown.c:555
        td = (struct thread *) 0xc22c5480
        bootopt = 260
        newpanic = 0
        ap = 0xce9283b4 "h\204\222Îø¤FÀ\027\222fÀ"
        buf = "ffs_blkfree: freeing free frag", '\0' <repeats 225 times>
#3  0xc046a561 in db_panic (addr=-1067019753, have_addr=0, count=-1, modif=0xce9283dc "") at /usr/src/sys/ddb/db_command.c:435
No locals.
#4  0xc046a4f8 in db_command (last_cmdp=0xc092bfc4, cmd_table=0x0, aux_cmd_tablep=0xc08a6214, aux_cmd_tablep_end=0xc08a6230) at /usr/src/sys/ddb/db_command.c:404
        cmd = (struct command *) 0xc0823be0
        t = 0
        modif = "\000\204\222Îèó~Àô\203\222Îø\203\222Î\211\a\000\000\211\a\000\000Ï\a\000\000\000\000\000\000 Ð\233À\r\000\000\000 Ð\233À Ð\233À\r\000\000\000\001\000\000\0004\204\222Î\033í~À4\204\222Î4í~À\200ý\231À`\034\231Àx\000\000\000ÀÈ\222À\200T,ÂT\204\222Î\224ÅFÀѧ\207ÀlÂFÀ\200T,ÂÀÈ\222À\036ºFÀ"
        addr = -1067019753
        count = -1
        have_addr = 0
        result = 0
#5  0xc046a5c0 in db_command_loop () at /usr/src/sys/ddb/db_command.c:455
No locals.
#6  0xc046c1d9 in db_trap (type=3, code=0) at /usr/src/sys/ddb/db_main.c:221
        jb = {{_jb = {-829258604, -829258624, -829258552, 1, -1037282176, -1069104782, -1067011683, 10, -829258352, -829258380, 1, -1037282176}}}
        prev_jb = (void *) 0x0
        bkpt = 0
#7  0xc0669510 in kdb_trap (type=3, code=0, tf=0xce928574) at /usr/src/sys/kern/subr_kdb.c:485
        did_stop_cpus = 1
        handled = -829258380
#8  0xc080d624 in trap (frame=
      {tf_fs = 8, tf_es = 40, tf_ds = 40, tf_edi = -1064758081, tf_esi = 1, tf_ebp = -829258316, tf_isp = -829258336, tf_ebx = -829258272, tf_edx = 0, tf_ecx = -1052561408, tf_eax = 18, tf_trapno = 3, tf_err = 0, tf_eip = -1067019753, tf_cs = 32, tf_eflags = 662, tf_esp = -829258284, tf_ss = -1067125917}) at /usr/src/sys/i386/i386/trap.c:614
        td = (struct thread *) 0xc22c5480
        p = (struct proc *) 0xc22dd000
        sticks = 10
        i = 0
        ucode = 0
        type = 3
        code = 0
        addr = 0
        eva = 0
        ksi = {ksi_link = {tqe_next = 0xc087a688, tqe_prev = 0x0}, ksi_info = {si_signo = -1064703823, si_errno = -829258460, si_code = 1, si_pid = 12288, si_uid = 0, si_status = 0, si_addr = 0xa, si_value = {sival_int = 2048, 
      sival_ptr = 0x800}, _reason = {_fault = {_trapno = 0}, _timer = {_timerid = 0, _overrun = 558}, _mesgq = {_mqd = 0}, _poll = {_band = 0}, __spare__ = {__spare1__ = 0, __spare2__ = {558, -1064758117, -1032105768, 4, 
          808728576, -829258446, -1067047645}}}}, ksi_flags = -1064022864, ksi_sigq = 0x2}
#9  0xc07fa4da in calltrap () at /usr/src/sys/i386/i386/exception.s:137
No locals.
#10 0xc0669217 in kdb_enter (msg=0x12 <Address 0x12 out of bounds>) at cpufunc.h:60
No locals.
#11 0xc064f363 in panic (fmt=0xc08914bf "ffs_blkfree: freeing free frag") at /usr/src/sys/kern/kern_shutdown.c:539
        td = (struct thread *) 0xc22c5480
        bootopt = 256
        newpanic = 1
        ap = 0xce9285e0 "\177\024\211Àx4NÂ"
        buf = "ffs_blkfree: freeing free frag", '\0' <repeats 225 times>
#12 0xc0774be4 in ffs_blkfree (ump=0xc2474600, fs=0xc27b5000, devvp=0xc27ad840, bno=2048, size=2048, inum=30) at /usr/src/sys/ufs/ffs/ffs_alloc.c:1892
        cgp = (struct cg *) 0xc6668000
        bp = (struct buf *) 0xc5be1ba8
        fragno = 0
        cgbno = 2048
        cgblkno = Unhandled dwarf expression opcode 0x93
(kgdb) list *0xc0774be4
0xc0774be4 is in ffs_blkfree (/usr/src/sys/ufs/ffs/ffs_alloc.c:1894).
1889                                    printf("dev = %s, block = %jd, fs = %s\n",
1890                                        devtoname(dev), (intmax_t)(bno + i),
1891                                        fs->fs_fsmnt);
1892                                    panic("ffs_blkfree: freeing free frag");
1893                            }
1894                            setbit(blksfree, cgbno + i);
1895                    }
1896                    cgp->cg_cs.cs_nffree += i;
1897                    fs->fs_cstotal.cs_nffree += i;
1898                    fs->fs_cs(fs, cg).cs_nffree += i;

>How-To-Repeat:

1.        creat mirror using gmirror
2.        boot the system without geom_mirror_load=YES in loader.cfg,
3.        after reboot gmirror load 
4.        mount /dev/mirror/{label} /mnt
4         dump -L -0 -f- / |(cd /mnt && restore -r -v -f-).




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



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