From owner-freebsd-geom@FreeBSD.ORG Mon Dec 5 01:40:07 2011 Return-Path: Delivered-To: freebsd-geom@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C1C2106566C for ; Mon, 5 Dec 2011 01:40:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 139608FC14 for ; Mon, 5 Dec 2011 01:40:07 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id pB51e6wa020428 for ; Mon, 5 Dec 2011 01:40:06 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id pB51e6Ow020427; Mon, 5 Dec 2011 01:40:06 GMT (envelope-from gnats) Date: Mon, 5 Dec 2011 01:40:06 GMT Message-Id: <201112050140.pB51e6Ow020427@freefall.freebsd.org> To: freebsd-geom@FreeBSD.org From: Kaho Toshikazu Cc: Subject: Re: kern/162997: [geom] multiple gmirror cause kernel panic during shutdown X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Kaho Toshikazu List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2011 01:40:07 -0000 The following reply was made to PR kern/162997; it has been noted by GNATS. From: Kaho Toshikazu To: Florian Smeets Cc: bug-followup@freebsd.org, Alexander Motin 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