Subject: Is restarting xend supposed to panic the system?
To: None <port-xen@NetBSD.org>
From: Jed Davis <jdev@panix.com>
List: port-xen
Date: 06/23/2005 19:46:54
I was under the impression that it should be possible to stop and start
xend, with unprivileged domains running, and not have the system fall
over.  And even if that shouldn't be done, it probably shouldn't fail
in the manner that it does.

My dom0 kernel is from the netbsd-3 branch (either with or without my
xbdback patch from the other thread; the same thing happens either way),
with xentools-2.0.6nb1. "/etc/rc.d/xend stop" stops xend, with no output
to its log; starting it again gives this, in xend.log:

  [2005-06-23 12:17:02 xend] INFO (SrvDaemon:610) Xend Daemon started
  [2005-06-23 12:17:02 xend] INFO (console:94) Created console id=14 domain=1 port=9601
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:1130) Creating vbd dom=1 uname=phy:/dev/ccd0i
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:1130) Creating vbd dom=1 uname=phy:/dev/wd0g
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:1107) Creating vif dom=1 vif=0 mac=aa:00:00:5f:ce:de
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:665) Destroying vifs for domain 1
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:674) Destroying vbds for domain 1
  [2005-06-23 12:17:02 xend] DEBUG (blkif:552) Destroying blkif domain=1
  [2005-06-23 12:17:02 xend] DEBUG (blkif:408) Destroying vbd domain=1 idx=0
  [2005-06-23 12:17:02 xend] DEBUG (blkif:408) Destroying vbd domain=1 idx=1
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:634) Closing console, domain 1
  [2005-06-23 12:17:02 xend] DEBUG (XendDomainInfo:622) Closing channel to domain 1

And this on the console:

  xbd backend: detach device ccd0h for domain 1
  xbd backend: detach device wd0g for domain 1

and xend exits.  Trying to start xend again yields, in xend.log:

  [2005-06-23 12:17:47 xend] INFO (SrvDaemon:610) Xend Daemon started

and, on the console, this panic:

  panic: kernel diagnostic assertion "pmap->pm_obj.uo_npages == 0" failed: file "../../../../arch/xen/i386/pmap.c", line 2091
  Stopped in pid 891.1 (python2.3) at     netbsd:cpu_Debugger+0x4:        leave
  cpu_Debugger(cae61298,cae5d804,0,c9be96d4,0) at netbsd:cpu_Debugger+0x4
  panic(c05eaca0,c0569b9d,c057ee75,c05c8c40,82b) at netbsd:panic+0x121
  __main(c0569b9d,c05c8c40,82b,c057ee75,c072b000) at netbsd:__main
  pmap_destroy(c9be96d4,0,cae87dc8,c03c9666,1) at netbsd:pmap_destroy+0x8b
  pmap_load(c04afcb2,cae87e04,bfbfe4ec,70,cae87ef4) at netbsd:pmap_load+0x2d9
  copyout(cae87ef4,cae5d92c,cae87ecc,ca9df800,ca9d8d00) at netbsd:copyout+0xe
  kpsendsig(cae61298,cae87ef4,cae5d92c,cae87f20,c066b700) at netbsd:kpsendsig+0xbe
  postsig(14,cae87f64,cae87f5c,0,c06256a0) at netbsd:postsig+0x22d
  syscall_plain() at netbsd:syscall_plain+0xec
  --- syscall (number 4) ---
  0xbd9728df:
  ds          0x11
  es          0x11
  fs          0x31
  gs          0x11
  edi         0x1
  esi         0x100
  ebp         0xcae87d28
  ebx         0x1
  edx         0
  ecx         0xfffffffe
  eax         0x20ae
  eip         0xc03c1bf0  cpu_Debugger+0x4
  cs          0x9
  eflags      0x1202
  esp         0xcae87d28
  ss          0x11
  netbsd:cpu_Debugger+0x4:        leave
  Stopped in pid 891.1 (python2.3) at     netbsd:cpu_Debugger+0x4:        leave

I can make this a PR, but I thought I'd see if anyone on the list had any ideas first.

-- 
(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l))))))  (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k)))))))    '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))