[Crash-utility] dis command not correct in crash [ARM]

Lei Wen adrian.wenl at gmail.com
Tue Mar 5 08:19:29 UTC 2013


Mike,

On Tue, Mar 5, 2013 at 4:06 PM, Mika Westerberg <mika.westerberg at iki.fi> wrote:
> On Tue, Mar 05, 2013 at 08:26:15AM +0800, Lei Wen wrote:
>> Hi Mike,
>>
>>
>> On Tue, Mar 5, 2013 at 3:49 AM, Mika Westerberg <mika.westerberg at iki.fi>wrote:
>>
>> > On Mon, Mar 04, 2013 at 10:20:42AM +0800, Lei Wen wrote:
>> > > I met "dis" command not correct issue when use the crash, any idea?
>> > > For built-in "dis" command in crash:
>> > > crash> dis task_rq_lock
>> > > 0xc015a2d8 <task_rq_lock>:      rscsgt  r0, sp, r3, lsl #14
>> > > 0xc015a2dc <task_rq_lock+4>:    mrcgt   8, 7, r0, cr2, cr13, {5}
>> > > 0xc015a2e0 <task_rq_lock+8>:    mcrvc   8, 4, r3, cr13, cr3, {6}
>> > > 0xc015a2e4 <task_rq_lock+12>:   lslsvc  r3, r10, r8
>> > > 0xc015a2e8 <task_rq_lock+16>:   bl      0xc049fe34
>> > > <__ip_route_output_key+220>
>> >
>> > Looks weird.
>> >
>> > What is the kernel version? Does the 'dis' command work for other
>> > functions?
>> >
>>
>> Seems other functions is not working either...
>> Is the page table being corrupted? But I still could parse out the dump
>> image and check the kernel dmesg for it, which is also weird.
>
> If crash is able to show you backtraces etc. I believe it has nothing to do
> with page table corruption. And the symbols are in vmlinux file anyway.
>
>> crash> dis sched_rt_handler
>> 0xc0160ed8 <sched_rt_handler>:  cdppl   13, 5, cr2, cr6, cr13, {4}
>> 0xc0160edc <sched_rt_handler+4>:        stcle   9, cr7, [r7], #132      ;
>> 0x84
>> 0xc0160ee0 <sched_rt_handler+8>:                        ; <UNDEFINED>
>> instruction: 0x167256bb
>>
>> (gdb) disas sched_rt_handler
>> Dump of assembler code for function sched_rt_handler:
>>    0xc0160ed8 <+0>:     push    {r4, r5, r6, r7, r8, r9, r10, r11, lr}
>>    0xc0160edc <+4>:     add     r11, sp, #32
>>    0xc0160ee0 <+8>:     ldr     r4, [pc, #384]  ; 0xc0161068
>> <sched_rt_handler+400>
>
> What does 'nm vmlinux|grep sched_rt_handler' say?

Here is the result:
crash> !nm vmlinux|grep sched_rt_handler
c0160ed8 T sched_rt_handler

>
> Since the dis command does nothing ARM specific, I wonder if we have GDB
> version in crash that misses some newer GCC features? What GDB version are you
> using?

GDB version inside crash is 7.3.1, and crash version is 6.1.4.
The standalone gdb version could be seen below:
GNU gdb (Sourcery CodeBench Lite 2012.03-57) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu
--target=arm-none-linux-gnueabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>.

Thanks,
Lei




More information about the Crash-utility mailing list