Re: Scheduling in interrupt and call trace

From: Russell King
Date: Mon Mar 19 2007 - 08:41:39 EST


On Mon, Mar 19, 2007 at 08:37:57PM +0800, railroad seeker wrote:
> After that, the program counter must located in BUG(), that is something
> like
> "(void *)0 = 0" if we really do scheduling in interrupt contxt, and
> should cause
> the kernel to panic. However, what i got is that the latest program
> counter is located within the do_IRQ() context when the kernel was
> crashed . But it
> seems that the stack trace is a kernel stack of process context since
> the bottom of the stack is ret_from_syscall. (I have not enabled the
> frame pointer when compiling the kernel, instead, I back traced by
> manually inspect each 32 bit value
> from the output of objdump) , and I think that the latest PC should
> point to the next instruction of "(void *) 0 = 0".
>
> Is there any possibility with which we got this incorrect information,
> or I have
> misunderstanding about "kernel system to interrupt context switch?

Please enable frame pointers and show the resulting backtrace; it is
possible that trying to manually decode the stack without frame
pointers enabled will result in a confused backtrace.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/