2009-09-09 09:49:26 using Kernel panic information
Filip Vanalme (BELGIUM)
Message: 79707
Hi,
My application is causing a Kernel Panic. This gives me some information (addresses, call trace) about the place in the software that contains the problem. (Somewhere, it is accessing memory out of range...)
On the other hand, a map file is created when compiling/linking the application. Also containing address information.
But how can I "couple" these two information sources ? I notice that the addresses from the dump do not correspond with the addresses in the map file. However, there must be a relationship, no ? How do I map the addresses of the dump onto the addresses of the map file ?
Thanks,
Filip
screenshot of the kernel panic :
DCPLB_FAULT_ADDR=0b0017a0
ICPLB_FAULT_ADDR=00797396
Stack from 0020aa28:<0>
<0> 00000000<0> 001052ac<0> 00000000<0> 00797396<0> 0000ffff<0> ffa00226<0> 0b0013d0<0> 00000044<0>
<0> 0065fedc<0> 00000001<0> 00106824<0> 00006480<0> 00000004<0> 00000030<0> 0065fc48<0> 00000026<0>
<0> 02001004<0> 004b227a<0> 004b227a<0> 00000026<0> 00000000<0> 006ec000<0> 00797396<0> 004b227a<0>
<0> 007975c0<0> 00000063<0> 02001004<0> 00000001<0> 004afd8d<0> 00000000<0> 004afd8a<0> 00000000<0>
<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0> 00000312<0> 00420244<0> 0065edc8<0>
<0> 00001000<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0> 00000000<0>
Call Trace:<0>
<0> [<00100000>]<0> [<00107d8c>]<0> [<00107dd0>]<0> [<00107e1c>]<0>
<0> [<00107e60>]<0> [<00107cd0>]<0> [<00107d24>]<0> [<00107d58>]<0>
<0> [<00107cd0>]<0> [<00107cd4>]<0> [<00107cfc>]<0> [<001e4d54>]<0>
<0> [<001e4d68>]<0> [<00184d1c>]<0> [<00184d28>]<0> [<001e8278>]<0>
<0> [<00184c74>]<0> [<001e4d78>]<0> [<00184d1c>]<0> [<00184d28>]<0>
<0> [<001e8278>]<0> [<00184c74>]<0> [<001e4d84>]<0> [<00184d1c>]<0>
<0> [<00184d28>]<0> [<001e8278>]<0> [<00184c74>]<0> [<001e4d90>]<0>
<0> [<00184d1c>]<0> [<00184d28>]<0>
Kernel panic - not syncing: No CPLB Address Match
TranslateQuoteReplyEditDelete
2009-09-09 09:55:32 Re: using Kernel panic information
Mike Frysinger (UNITED STATES)
Message: 79708
docs.blackfin.uclinux.org/doku.php?id=uclinux-dist:analyzing_traces
QuoteReplyEditDelete
2009-09-10 03:24:41 Re: using Kernel panic information
Filip Vanalme (BELGIUM)
Message: 79739
Thanks.
Altough I have the option KALLSYMS enabled (for the kernel) and the -g option when compiling the application, I still don't see any symbols in the kernel panic dump. I just have addresses.
Somewhere in the text of that document it says : "You can convert the addresses by hand using the appropriate System.map file,...", but I didn't find out how to do it. And I think this relates to Kernel degubbing, not application debugging. I assume the principle could be the same for an application, using the application's map file generated when linking.
I think I might have, again, a problem of kernel version I use. Still stuck with version 2006R1... (not my choice...still not allowed to change to 2008 version...). That's probably the reason why the output of my kernel panic is not corresponding with the outputs mentioned in the doc... and probably the reason why I don't get any symbol information...
However, even with that old version, there should be a way to get information from the addresses printed in the kernel panic dump, no ?
(forgot to mention, may be important : my application is started manually, no automatic start when kernel boots up)
Best Regards,
Filip
TranslateQuoteReplyEditDelete
2009-09-10 03:50:15 Re: using Kernel panic information
Mike Frysinger (UNITED STATES)
Message: 79744
the kernel is never going to decode userspace symbols. there is no such map file for user apps either the majority of the time. just use the ELF binary itself.
as for trace output in 2006R1, we really dont know ... much too long ago for us to remember how it worked. 2009R1 seems to work fine.
QuoteReplyEditDelete
2009-09-10 11:54:45 Re: using Kernel panic information
Robin Getz (UNITED STATES)
Message: 79755
Filip:
I don't think that 2006 kernel had the option for tracing, and putting out symbol info. That is something Mike and I added circa late 2006 - after 2006 release was out.
My suggestion is to run things under gdb - that should work -- if not, just run the userspace portion on a new kernel - debug things there, and then move it back to 2006 for your product.
-Robin