Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kernel diagnostic assertion in evtchn.c



On Sat, Jun 07, 2008 at 11:23:28PM +1000, Sarton O'Brien wrote:
> Manuel Bouyer wrote:
> >On Sat, Jun 07, 2008 at 12:18:47PM +1000, Sarton O'Brien wrote:
> >>Only vga console so copied by hand.
> >>
> >>cpl 8 rsp ffffa0000be7e7f8
> >>Stopped in pid 0.36 (system) at netbsd:breakpoint+0x5:   leave
> >>breakpoint() at netbsd:breakpoint+0x5
> >>panic() at netbsd:panic+0x255
> >>__kernassert() at netbsd:__kernassert+0x2d
> >>evtchn_do_event() at netbsd:evtchn_do_event+0x263
> >
> >Paul Goyette pointed out the first line of the message, which means it's
> >amd64.
> >Based on this, evtchn_do_event+0x263 points to line 301, i.e. the
> >same issue as reported by Kazushi Marukawa.
> >I'll see if I can reproduce it on my test box. Do you have other
> >domUs running than the one doing the cvs update ?
> 
> The uname I provided says amd64 at the end too :)
> 
> 10 vnds set in kernel but only 4 being used.
> 
> 3 x i386pae domu and 1 x amd64 domu
> 
> I think the significant factors though were the ~16GB being transfered 
> to the domu while the parity rewrite was occuring.
> 
> If you want more details like memory and configs, let me know.

I can't reproduce it. raidframe may be the key here, as Kazushi's trace show
it too.
I'll have to add a second disk in my test box to try to reproduce it.
In the meantime, if one of you can afford to reproduce this panic, please
do so with the attached patch on the dom0 kernel, and report what the printf()
shows here (do see them you can use "dmesg" at the db> prompt).
The "fn" pointers printed are function pointers; you can use gdb or nm /netbsd
to map them to function names; that would be usefull too.

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--
Index: xen/evtchn.c
===================================================================
RCS file: /cvsroot/src/sys/arch/xen/xen/evtchn.c,v
retrieving revision 1.38
diff -u -r1.38 evtchn.c
--- xen/evtchn.c        24 May 2008 15:09:34 -0000      1.38
+++ xen/evtchn.c        7 Jun 2008 14:30:23 -0000
@@ -298,7 +298,14 @@
                        ci->ci_ilevel = i;
                        for (ih = ci->ci_isources[i]->ipl_handlers; ih != NULL;
                            ih = ih->ih_ipl_next) {
-                               KASSERT(ih->ih_level == i);
+                               if (ih->ih_level != i) {
+                                       printf("evtchn_do_event: ih %p ih_level 
%d != i %d\n", ih, ih->ih_level, i);
+                                       printf("ih handlers:\n");
+                                       for (ih = 
ci->ci_isources[i]->ipl_handlers; ih != NULL; ih = ih->ih_ipl_next)
+                                               printf(" %p fn %p\n", ih, 
ih->ih_fun);
+                                       panic("ih->ih_level != i");
+                                       /* NOTREACHED */
+                               }
                                sti();
                                ih_fun = (void *)ih->ih_fun;
                                ih_fun(ih->ih_arg, regs);


Home | Main Index | Thread Index | Old Index