kern/162997: [geom] multiple gmirror cause kernel panic during shutdown

Kaho Toshikazu kaho at elam.kais.kyoto-u.ac.jp
Mon Dec 5 01:40:07 UTC 2011


The following reply was made to PR kern/162997; it has been noted by GNATS.

From: Kaho Toshikazu <kaho at elam.kais.kyoto-u.ac.jp>
To: Florian Smeets <flo at freebsd.org>
Cc: bug-followup at freebsd.org, Alexander Motin <mav at freebsd.org>
Subject: Re: kern/162997: [geom] multiple gmirror cause kernel panic during shutdown
Date: Mon, 05 Dec 2011 10:06:11 +0900

 Hello,
 
 I don't like to crash real machine many times and build test
 environment on qemu. md0p2a is labeled gm0 and md0p2h is gm1,
 and mount as UFS2. After sysctl kern.geom.debugflags=7,
 machine was rebooted. The copy from console before panic is here.
 
 open delta:[r-1w-1e-3] old:[r2w2e6] provider:[r2w2e6] 0xc14eac00(md0)
 g_post_event_x(0xc052c830, 0xc166c300, 2, 0)
   ref 0xc166c300
 g_post_event_x(0xc0a03e40, 0xc1446b00, 2, 0)
 g_wither_geom(0xc17ffa80(gm1.sync))
 GEOM_MIRROR: Device gm1 destroyed.
 g_wither_geom(0xc17ffb00(gm1))
 g_orphan_register(mirror/gm1)
 g_vfs_orphan(0xc1800400(ffs.mirror/gm1))
 kernel trap 12 with interrupts disabled
 
 The situation looks like this:
 gm1 was destroyed in g_vfs_close() and then g_vfs_orphan() was called to
 manipulate gm1. The function g_vfs_close() was freed softc and 
 g_vfs_orphan() would like to use softc already freed and it causes
 panic. 
 
 I think that malloc() in g_vfs_open() and free() in g_vfs_close()
 for mtx_lock is not valid method. malloc() should not be used,
 or fee() should be used in other function. Or correct other code
 which never call destroyed provider.
 
 --
 kaho Toshikazu


More information about the freebsd-geom mailing list