Per On Tue, Mar 5, 2013 at 6:30 PM, Per Fransson <per.fransson.ml@xxxxxxxxx> wrote: > Hi, > > On Tue, Mar 5, 2013 at 9:22 AM, Lei Wen <adrian.wenl@xxxxxxxxx> wrote: >> Per, >> >> On Tue, Mar 5, 2013 at 3:25 PM, Per Fransson <per.fransson.ml@xxxxxxxxx> wrote: >>> Hi Lei, >>> >>> On Tue, Mar 5, 2013 at 1:22 AM, Lei Wen <adrian.wenl@xxxxxxxxx> wrote: >>>> Hi Per, >>>> >>>> >>>> On Tue, Mar 5, 2013 at 4:38 AM, Per Fransson <per.fransson.ml@xxxxxxxxx> >>>> wrote: >>>>> >>>>> Hi, >>>>> >>>>> On Mon, Mar 4, 2013 at 8:49 PM, Mika Westerberg <mika.westerberg@xxxxxx> >>>>> 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? >>>>> > >>>>> >>>>> You could do a check on one of the instructions - the 'bl' comes to >>>>> mind. Not sure, but I believe it should amount to: >>>>> >>>>> 0xeb000000 | (((0xc049fe34-0xc015a2f0) >> 2) & 0x00ffffff) >>>>> >>>>> i.e. >>>>> >>>>> 0xeb0d16d1 >>>>> >>>>> Is that what you get with >>>>> >>>>> crash> rd 0xc015a2e8 >>>>> >>>>> ? >>>>> >>>>> If not, try a >>>>> >>>>> crash> search 0xeb0d16d1 >>>>> >>>>> and see if it turns up somewhere else. >>>> >>>> >>>> >>>> >>>> Yes, it is that value. >>>> >>>> crash> rd 0xc015a2e8 >>>> >>>> c015a2e8: eb0d16d1 .... >>>> >>>> >>>> >>>> While in gdb, show the same address's value, it would be: >>>> >>>> (gdb) x 0xc015a2e8 >>>> >>>> 0xc015a2e8 <task_rq_lock+16>: 0xe1a05000 >>>> >>>> >>>> >>>> Why it didn't match with each other? Any idea? >>>> >>>> >>> >>> Nope, no idea. When you're using gdb, do you feed it the coredump as >>> well, or just the vmlinux? if you get the same strange result with >>> gdb+vmlinux+coredump, I think you should try to match some known data, >>> e.g. the 'bl' and see if the contents are offset somehow. Try the gdb >>> search command on 0xeb0d16d1. >> >> Your hypothesis is correct. >> When feed dump image with vmlinux to the gdb, I get exactly same result >> as crash... >> >> How to use the search command in gdb? >> > > Oh, it's 'find' in gdb. To look for 0xeb0d16d1 in the virtual interval > 0xc0000000--0xe0000000 you would: > > (gdb) find /w 0xc0000000, +0x20000000, 0xeb0d16d1 > > or use your favorite hex editor. > > If the dump isn't offset, it could be overwrites. Here is the result: (gdb) find /w 0xc0000000, +0x20000000, 0xeb0d16d1 0xc015a2e8 <task_rq_lock+16> 1 pattern found. Seems its output is exactly as crash's rd command... Thanks, Lei -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility