From owner-freebsd-bugs@FreeBSD.ORG Thu Jun 11 15:50:01 2009 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C5911106566B for ; Thu, 11 Jun 2009 15:50:01 +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 A1FC38FC1C for ; Thu, 11 Jun 2009 15:50:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n5BFo1MY013112 for ; Thu, 11 Jun 2009 15:50:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n5BFo1lV013111; Thu, 11 Jun 2009 15:50:01 GMT (envelope-from gnats) Resent-Date: Thu, 11 Jun 2009 15:50:01 GMT Resent-Message-Id: <200906111550.n5BFo1lV013111@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Emil Mikulic Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A75231065690 for ; Thu, 11 Jun 2009 15:40:46 +0000 (UTC) (envelope-from emil@dmr.ath.cx) Received: from ipmail04.adl2.internode.on.net (ipmail04.adl2.internode.on.net [203.16.214.57]) by mx1.freebsd.org (Postfix) with ESMTP id 3C1118FC16 for ; Thu, 11 Jun 2009 15:40:46 +0000 (UTC) (envelope-from emil@dmr.ath.cx) Received: from ppp154-240.static.internode.on.net ([150.101.154.240]) by ipmail04.adl2.internode.on.net with ESMTP; 12 Jun 2009 01:10:44 +0930 Received: by ppp154-240.static.internode.on.net (Poo-fix, from userid 1001) id 71E395C46; Fri, 12 Jun 2009 01:40:43 +1000 (EST) Message-Id: <20090611154043.71E395C46@ppp154-240.static.internode.on.net> Date: Fri, 12 Jun 2009 01:40:43 +1000 (EST) From: Emil Mikulic To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/135480: (zfs) panic: lock &arg.lock already initialized X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jun 2009 15:50:02 -0000 >Number: 135480 >Category: kern >Synopsis: (zfs) panic: lock &arg.lock already initialized >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jun 11 15:50:01 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Emil Mikulic >Release: 8.0-CURRENT, GENERIC, svn r193609 >Organization: >Environment: dual-core amd64, 4GB RAM >Description: On doing "zfs destroy" of a snapshot, I get the panic. It doesn't happen with all snapshots, but I've got one that makes this very reproducible. Taken from kgdb: panic: lock &arg.lock already initialized cpuid = 1 KDB: enter: panic Physical memory: 4047 MB Dumping [...] (kgdb) where #0 doadump () at pcpu.h:223 [...] #9 0xffffffff805713fb in panic (fmt=Variable "fmt" is not available. ) at /usr/src/sys/kern/kern_shutdown.c:558 #10 0xffffffff8125758e in dsl_dataset_destroy_sync (arg1=0xffffff0005e71c00, tag=0xffffff000b6f89a0, cr=0xffffff00024ddd00, tx=0xffffff000bbe9b00) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c:1422 #11 0xffffffff81259f0b in dsl_sync_task_group_sync (dstg=0xffffff0005d52a00, tx=0xffffff000bbe9b00) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c:186 #12 0xffffffff81259a33 in dsl_pool_sync (dp=0xffffff0005e1e400, txg=75219) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c:316 #13 0xffffffff81268405 in spa_sync (spa=0xffffff00058ca000, txg=75219) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c:3988 #14 0xffffffff812704bf in txg_sync_thread (arg=Variable "arg" is not available. ) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c:352 #15 0xffffffff80549a3a in fork_exit ( callout=0xffffffff81270230 , arg=0xffffff0005e1e400, frame=0xffffff8078c17c90) at /usr/src/sys/kern/kern_fork.c:828 #16 0xffffffff80828abe in fork_trampoline () at /usr/src/sys/amd64/amd64/exception.S:552 #17 0x0000000000000000 in ?? () #18 0x0000000000000000 in ?? () #19 0x0000000000000001 in ?? () #20 0x0000000000000000 in ?? () [...] (kgdb) frame 10 #10 0xffffffff8125758e in dsl_dataset_destroy_sync (arg1=0xffffff0005e71c00, tag=0xffffff000b6f89a0, cr=0xffffff00024ddd00, tx=0xffffff000bbe9b00) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c:1422 1422 mutex_init(&arg.lock, NULL, MUTEX_DEFAULT, NULL); (kgdb) list 1417 static void 1418 dsl_dataset_drain_refs(dsl_dataset_t *ds, void *tag) 1419 { 1420 struct refsarg arg; 1421 1422 ---------> mutex_init(&arg.lock, NULL, MUTEX_DEFAULT, NULL); 1423 cv_init(&arg.cv, NULL, CV_DEFAULT, NULL); 1424 arg.gone = FALSE; 1425 (void) dmu_buf_update_user(ds->ds_dbuf, ds, &arg, &ds->ds_phys, 1426 dsl_dataset_refs_gone); (kgdb) print arg No symbol "arg" in current context. (kgdb) print ds Variable "ds" is not available. (kgdb) print tag $1 = (void *) 0xffffff000b6f89a0 (kgdb) list *0xffffffff8125758e 0xffffffff8125758e is in dsl_dataset_destroy_sync (/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c:1717). 1712 if (ds->ds_phys->ds_props_obj != 0) 1713 VERIFY(0 == zap_destroy(mos, ds->ds_phys->ds_props_obj, tx)); 1714 dsl_dir_close(ds->ds_dir, ds); 1715 ds->ds_dir = NULL; 1716 ---------> dsl_dataset_drain_refs(ds, tag); 1717 VERIFY(0 == dmu_object_free(mos, obj, tx)); 1718 } 1719 1720 static int 1721 dsl_dataset_snapshot_reserve_space(dsl_dataset_t *ds, dmu_tx_t *tx) >How-To-Repeat: # zfs destroy tank/foo@bar (and get unlucky) >Fix: >Release-Note: >Audit-Trail: >Unformatted: