Port-xen archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Panic on dom0 shutdown
On Fri, Dec 28, 2012 at 05:36:03PM +0100, Johan Ihrén wrote:
> Hi guys,
>
> Holidays intervened for a few days...
>
> On Dec 20, 2012, at 20:41 , David Laight wrote:
>
> > On Thu, Dec 20, 2012 at 07:39:18PM +0100, Manuel Bouyer wrote:
> >> On Thu, Dec 20, 2012 at 06:42:14PM +0100, Johan Ihr?n wrote:
> >>> I have a (reproducible) panic on shutdown, also recentish NetBSD 6
> >>> (kernel form december 16), but no raidframe. In my case it only panics on
> >>> "halt -p", not on "halt" (100% reproducible). The trace is similar but
> >>> not identical (this is by hand, no serial console available):
> >>>
> >>> kernel: page fault trap, code=0
> >>> Stopped in pid 5800.1 (halt) at netbsd:bus_space_read_4*0x8:
> >>> bus_space_read_4()
> >>> Xresume_xenev6() at netbsd:Xresume_xenev6+0x47
> >>
> >> there's something missing here, bus_space_read_4() is not called directly
> >> by Xresume_xenev6().
>
> Not questioning that, but the trace as I typed it looks like above.
>
> >> Is it i386 or amd64 ? If amd64, please make sure
> >> you still have -fno-omit-frame-pointer in kernel build options
> >> (makeoptions)
>
> It's amd64, a standard XEN3_DOM0-kernel grabbed as a binary from a daily
> build at from www.fr.netbsd.org. I've built a local kernel also, ensuring
> that -fno-omit-frame-pointer is in the makeoptions. I've made one change and
> that is adding
>
> usb* at ehci? flags 1
>
> to get the USB keyboard working during boot.
>
> > You might want to disable tail-calls if you want a full trace back.
>
> I assume that may be the cause of the trace not being correct. Ok, so adding
> "-fno-optimize-sibling-calls" to makeoptions (is that the correct way of
> disabling tail-calls?) causes the trace to change like this:
>
> kernel: page fault trap, code=0
> Stopped in pid 634.1 (halt) at netbsd:bus_space_read_4*0x8:
> bus_space_read_4()
> pirq_interrupt()
> Xresume_xenev6() at netbsd:Xresume_xenev6+0x47
There is still probably a tail-call happening here; pirq_interrupt() just calls
a function pointer. There's isn't much ways to know what this function pointer
points to; and this is where the faulty bus_space_read_4() is happening ...
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index