NetBSD Problem Report #45158

From www@NetBSD.org  Tue Jul 19 08:27:43 2011
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id D0FE863BA8C
	for <gnats-bugs@gnats.NetBSD.org>; Tue, 19 Jul 2011 08:27:42 +0000 (UTC)
Message-Id: <20110719082742.2711163BA70@www.NetBSD.org>
Date: Tue, 19 Jul 2011 08:27:42 +0000 (UTC)
From: roger.pau@entel.upc.edu
Reply-To: roger.pau@entel.upc.edu
To: gnats-bugs@NetBSD.org
Subject: Xen Kernel panics when restarting DomU (Problem with vnd detach?)
X-Send-Pr-Version: www-1.0

>Number:         45158
>Category:       port-xen
>Synopsis:       Xen Kernel panics when restarting DomU (Problem with vnd detach?)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-xen-maintainer
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 19 08:30:00 +0000 2011
>Closed-Date:    Sun Aug 07 17:40:05 +0000 2011
>Last-Modified:  Sun Aug 07 17:40:05 +0000 2011
>Originator:     Roger Pau Monne
>Release:        5.99.55
>Organization:
UPC
>Environment:
NetBSD loki 5.99.55 NetBSD 5.99.55 (XEN3_DOM0) #0: Mon Jul 18 20:18:34 CEST 2011  royger@loki:/usr/obj/sys/arch/amd64/compile/XEN3_DOM0 amd64
>Description:
Sometimes when restarting a domu I get the following panic (kernel compiled with diagnostic option):

xbd backend: detach device vnd1d for domain 6
xbd backend: detach device vnd0d for domain 6
panic: kernel diagnostic assertion "vp == vp->v_specnode->sn_dev->sd_bdevvp" failed: file "/usr/src/sys/miscfs/specfs/spec_vnops.c", line 1013
cpu0: Begin traceback...
copyright() at ffffffff80988d1d
uvm_fault(0xffffffff80c8d5a0, 0xffffa00000000000, 1) -> e
fatal page fault in supervisor mode
trap type 6 code 0 rip ffffffff8022d577 cs e030 rflags 10246 cr2  ffffa00000000008 cpl 0 rsp ffffa0002ae29240
Skipping crash dump on recursive panic
panic: trap
Faulted in mid-traceback; aborting...rebooting...
(XEN) Domain 0 shutdown: rebooting machine.
>How-To-Repeat:
Start and stop a domu several times. I think the same should happen when mounting an unmouting and image several times using vnconfig.
>Fix:
Compile without diagnostic option?

>Release-Note:

>Audit-Trail:
From: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@entel.upc.edu>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: port-xen/45158: Xen Kernel panics when restarting DomU (Problem
 with vnd detach?)
Date: Thu, 21 Jul 2011 14:58:07 +0200

 I was wrong, the problem is not related to vnd, it happens also with
 block devices. To reproduce just create & shutdown a guest several
 times, sometimes at shutdown of the guest the Dom0 will panic.

From: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@entel.upc.edu>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: port-xen/45158: Xen Kernel panics when restarting DomU (Problem
 with vnd detach?)
Date: Tue, 26 Jul 2011 13:01:07 +0200

 I've sent this patch to tech-kern, but I'm afraid the problem is far
 deeper, this only prevents xbdback from trying to attach an already
 attached disk, and the crash doesn't happen, but the problem is still
 there in the underlying functions called by xbdback (bdevvp, vn_lock
 or VOP_OPEN). I'm still trying to figure out which one of this
 functions is responsible of the problem. I think the patch should be
 added anyway, because it prevents from doing unnecessary syscalls, an
 avoids the typical "xbdback backend/vbd/2/51714: can't VOP_OPEN device
 0xa906: 16", but it's not a complete solution for this bug.

 Regards, Roger.

 Index: sys/arch/xen/xen/xbdback_xenbus.c
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 RCS file: /cvsroot/src/sys/arch/xen/xen/xbdback_xenbus.c,v
 retrieving revision 1.41
 diff -u -r1.41 xbdback_xenbus.c
 --- sys/arch/xen/xen/xbdback_xenbus.c =C2=A0 24 Jul 2011 23:56:34 -0000 =C2=
 =A0 =C2=A0 =C2=A01.41
 +++ sys/arch/xen/xen/xbdback_xenbus.c =C2=A0 25 Jul 2011 15:55:28 -0000
 @@ -675,6 +675,7 @@
 =C2=A0{
 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct xenbus_device *xbusd =3D watch->xbw_dev;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct xbdback_instance *xbdi =3D xbusd->xbusd_u=
 .b.b_cookie;
 + =C2=A0 =C2=A0 =C2=A0 struct xbdback_instance *xbdi_iter;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0int err;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0long dev;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0char *mode;
 @@ -696,6 +697,12 @@
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0xbusd-=
 >xbusd_path, xbdi->xbdi_dev, dev);
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
 + =C2=A0 =C2=A0 =C2=A0 SLIST_FOREACH(xbdi_iter, &xbdback_instances, next) {
 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (xbdi_iter->xbdi_dev =
 =3D=3D dev) {
 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
 =A0 printf("xbdback: device 0x%lx already opened\n", dev);
 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
 =A0 return;
 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
 + =C2=A0 =C2=A0 =C2=A0 }
 =C2=A0 =C2=A0 =C2=A0 =C2=A0xbdi->xbdi_dev =3D dev;
 =C2=A0 =C2=A0 =C2=A0 =C2=A0err =3D xenbus_read(NULL, xbusd->xbusd_path, "mo=
 de", NULL, &mode);
 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (err) {

From: roger.pau@entel.upc.edu (Roger Pau Monne)
To: undisclosed-recipients:;
Cc: 
Subject: Re: port-xen/45158: Xen Kernel panics when restarting DomU (Problem with vnd detach?)
Date: Tue, 26 Jul 2011 14:27:08 +0200 (CEST)

 I hope this time the patch is attached correctly

 Index: sys/arch/xen/xen/xbdback_xenbus.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/xen/xen/xbdback_xenbus.c,v
 retrieving revision 1.41
 diff -u -r1.41 xbdback_xenbus.c
 --- sys/arch/xen/xen/xbdback_xenbus.c   24 Jul 2011 23:56:34 -0000      1.41
 +++ sys/arch/xen/xen/xbdback_xenbus.c   25 Jul 2011 15:55:28 -0000
 @@ -675,6 +675,7 @@
  {
         struct xenbus_device *xbusd = watch->xbw_dev;
         struct xbdback_instance *xbdi = xbusd->xbusd_u.b.b_cookie;
 +       struct xbdback_instance *xbdi_iter;
         int err;
         long dev;
         char *mode;
 @@ -696,6 +697,12 @@
                     xbusd->xbusd_path, xbdi->xbdi_dev, dev);
                 return;
         }
 +       SLIST_FOREACH(xbdi_iter, &xbdback_instances, next) {
 +               if (xbdi_iter->xbdi_dev == dev) {
 +                       printf("xbdback: device 0x%lx already opened\n", dev);
 +                       return;
 +               }
 +       }
         xbdi->xbdi_dev = dev;
         err = xenbus_read(NULL, xbusd->xbusd_path, "mode", NULL, &mode);
         if (err) {

From: roger.pau@entel.upc.edu (Roger Pau Monne)
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: port-xen/45158: Xen Kernel panics when restarting DomU (Problem with vnd detach?)
Date: Tue, 26 Jul 2011 15:06:41 +0200 (CEST)

 I hope this time the patch is attached correctly

 Index: sys/arch/xen/xen/xbdback_xenbus.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/xen/xen/xbdback_xenbus.c,v
 retrieving revision 1.41
 diff -u -r1.41 xbdback_xenbus.c
 --- sys/arch/xen/xen/xbdback_xenbus.c   24 Jul 2011 23:56:34 -0000      1.41
 +++ sys/arch/xen/xen/xbdback_xenbus.c   25 Jul 2011 15:55:28 -0000
 @@ -675,6 +675,7 @@
  {
         struct xenbus_device *xbusd = watch->xbw_dev;
         struct xbdback_instance *xbdi = xbusd->xbusd_u.b.b_cookie;
 +       struct xbdback_instance *xbdi_iter;
         int err;
         long dev;
         char *mode;
 @@ -696,6 +697,12 @@
                     xbusd->xbusd_path, xbdi->xbdi_dev, dev);
                 return;
         }
 +       SLIST_FOREACH(xbdi_iter, &xbdback_instances, next) {
 +               if (xbdi_iter->xbdi_dev == dev) {
 +                       printf("xbdback: device 0x%lx already opened\n", dev);
 +                       return;
 +               }
 +       }
         xbdi->xbdi_dev = dev;
         err = xenbus_read(NULL, xbusd->xbusd_path, "mode", NULL, &mode);
         if (err) {

State-Changed-From-To: open->closed
State-Changed-By: bouyer@NetBSD.org
State-Changed-When: Sun, 07 Aug 2011 17:40:05 +0000
State-Changed-Why:
Should be fixed with xbdback_xenbus.c 1.45


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.