All of lore.kernel.org
 help / color / mirror / Atom feed
* crash read error: kernel virtual address / vmcore address mismatch ?
@ 2013-05-07 13:40 Anand Raj Manickam
  2013-05-07 14:18 ` [Crash-utility] " Dave Anderson
       [not found] ` <CAEyr1FQ6MGMJK1+dyrLF+YaPwDFa1d+WVeRe6fuKojPUJO--xQ@mail.gmail.com>
  0 siblings, 2 replies; 4+ messages in thread
From: Anand Raj Manickam @ 2013-05-07 13:40 UTC (permalink / raw)
  To: kexec, crash-utility

Hi ,
Sorry about re posting this as i did not find solution ...

I m facing a issue where on

#crash /data/linux-2.6.30.8/vmlinux /proc/vmcore

crash 6.1.6
Copyright (C) 2002-2013  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.

GNU gdb (GDB) 7.3.1
Copyright (C) 2011 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 "i686-pc-linux-gnu"...

crash: read error: kernel virtual address: c127a9c8  type: "cpu_possible_mask"


I did follow few threads around , I have a case similar to
https://www.redhat.com/archives/crash-utility/2010-August/msg00029.html

Both the System Kernel and the Debug Kernel are the same.

My current config for

CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x400000

The /proc/kallsyms is diffrent between the System Kernel and Debug Kernel.
On the System Kernel it starts from 0x400000 .On the Debug kernel it
starts from 0x1000000 .

if  i change the CONFIG_PHYSICAL_START=0x400000 . It does NOT core dump.

my crashkernel=128M is the setting on grub.
Let me know if you need more info



Anand

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Crash-utility] crash read error: kernel virtual address / vmcore address mismatch ?
  2013-05-07 13:40 crash read error: kernel virtual address / vmcore address mismatch ? Anand Raj Manickam
@ 2013-05-07 14:18 ` Dave Anderson
       [not found] ` <CAEyr1FQ6MGMJK1+dyrLF+YaPwDFa1d+WVeRe6fuKojPUJO--xQ@mail.gmail.com>
  1 sibling, 0 replies; 4+ messages in thread
From: Dave Anderson @ 2013-05-07 14:18 UTC (permalink / raw)
  To: Discussion list for crash utility usage, maintenance and development
  Cc: kexec



----- Original Message -----
> Hi ,
> Sorry about re posting this as i did not find solution ...
> 
> I m facing a issue where on
> 
> #crash /data/linux-2.6.30.8/vmlinux /proc/vmcore

Do yourself a favor and copy /proc/vmcore to somewhere on disk.  Then
reboot the system into the original kernel, and run crash on the saved
vmcore.  I've never seen crash run on a /proc/vmcore file from the
secondary kernel.  

Also, after rebooting the the original kernel, please confirm that
crash runs OK on the live system.
 
> crash 6.1.6
> Copyright (C) 2002-2013  Red Hat, Inc.
> Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> Copyright (C) 1999-2006  Hewlett-Packard Co
> Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> Copyright (C) 2005, 2011  NEC Corporation
> Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
> Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
> This program is free software, covered by the GNU General Public License,
> and you are welcome to change it and/or distribute copies of it under
> certain conditions.  Enter "help copying" to see the conditions.
> This program has absolutely no warranty.  Enter "help warranty" for details.
> 
> GNU gdb (GDB) 7.3.1
> Copyright (C) 2011 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 "i686-pc-linux-gnu"...
> 
> crash: read error: kernel virtual address: c127a9c8  type: "cpu_possible_mask"

Please show the full output of "crash -d8 vmlinux vmcore".
 
> 
> I did follow few threads around , I have a case similar to
> https://www.redhat.com/archives/crash-utility/2010-August/msg00029.html
> 
> Both the System Kernel and the Debug Kernel are the same.

I don't know what you mean by "System Kernel" and "Debug Kernel". 

With respect to kdump and the crash utility, the only kernel that is
of interest is the vmlinux that was running when the primary system
crashed.

> 
> My current config for
> 
> CONFIG_PHYSICAL_START=0x1000000
> CONFIG_RELOCATABLE=y
> CONFIG_PHYSICAL_ALIGN=0x400000
> 
> The /proc/kallsyms is diffrent between the System Kernel and Debug Kernel.
> On the System Kernel it starts from 0x400000 .On the Debug kernel it
> starts from 0x1000000.

Again, the "Debug" kernel is irrelevant -- presuming by "Debug" you mean
the relocated "secondary" kernel that was kexec'd after the primary kernel
crashed.

> 
> if  i change the CONFIG_PHYSICAL_START=0x400000 . It does NOT core dump.
> 
> my crashkernel=128M is the setting on grub.
> Let me know if you need more info
> 

What "core dumps", the crash utility?  Again, trying to run the crash utility
while running on a 128MB secondary kernel is definitely not advisable.  

Dave


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Crash-utility] crash read error: kernel virtual address / vmcore address mismatch ?
       [not found]   ` <CAEyr1FRhLFjyoqWKyQoMc4cQqqA8fX7bPA=MWpY-z2RK74fekQ@mail.gmail.com>
@ 2013-05-08 13:29     ` Dave Anderson
  2013-05-09  4:06       ` Anand Raj Manickam
  0 siblings, 1 reply; 4+ messages in thread
From: Dave Anderson @ 2013-05-08 13:29 UTC (permalink / raw)
  To: Discussion list for crash utility usage, maintenance and development
  Cc: kexec, Anand Raj Manickam




----- Original Message -----
> On Wed, May 8, 2013 at 11:23 AM, Anand Raj Manickam <anandrm@gmail.com>
> wrote:
> >> Hi ,
> >> Sorry about re posting this as i did not find solution ...
> >>
> >> I m facing a issue where on
> >>
> >> #crash /data/linux-2.6.30.8/vmlinux /proc/vmcore
> >
> > Do yourself a favor and copy /proc/vmcore to somewhere on disk.  Then
> > reboot the system into the original kernel, and run crash on the saved
> > vmcore.  I've never seen crash run on a /proc/vmcore file from the
> > secondary kernel.
> >
> > Also, after rebooting the the original kernel, please confirm that
> > crash runs OK on the live system.
> >
> >
> >> crash 6.1.6
> >> Copyright (C) 2002-2013  Red Hat, Inc.
> >> Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> >> Copyright (C) 1999-2006  Hewlett-Packard Co
> >> Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> >> Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> >> Copyright (C) 2005, 2011  NEC Corporation
> >> Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
> >> Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
> >> This program is free software, covered by the GNU General Public License,
> >> and you are welcome to change it and/or distribute copies of it under
> >> certain conditions.  Enter "help copying" to see the conditions.
> >> This program has absolutely no warranty.  Enter "help warranty" for
> >> details.
> >>
> >> GNU gdb (GDB) 7.3.1
> >> Copyright (C) 2011 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 "i686-pc-linux-gnu"...
> >>
> >> crash: read error: kernel virtual address: c127a9c8  type: "cpu_possible_mask"
> >
> > Please show the full output of "crash -d8 vmlinux vmcore".
> 
> After rebooting to the primary / live kernel
> 
>    I have attached the output for "crash -d8 vmlinux /data/vmcore" in d8.txt

Looking at the ELF header data in the debug output, your configuration 
does require special handling.  X86 kernels are typically not configured
with CONFIG_PHYSICAL_START larger than CONFIG_PHYSICAL_ALIGN, because
when that is done, the vmlinux unity-mapped symbol values do not match
their relocated values when the kernel is loaded.  This entry in the 
crash.changelog describes the situation:

http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5

4.0-4.5  - Addresses FC7/upstream x86 kernels that have been configured such
           that the vmlinux symbol values do not match their relocated values
           when loaded.  If CONFIG_PHYSICAL_START contains a value that is
           greater then CONFIG_PHYSICAL_ALIGN, then this mismatch occurs.
           Since the crash utility and its embedded gdb have always expected
           that the compiled-in kernel symbol addresses are "real", the virtual
           to physical translation fails, leading to an initialization-time
           failure with the message: "crash: vmlinux and /dev/crash do not
           match!" (/dev/mem or the dumpfile name may replace /dev/crash).
           To deal with this issue, there are several alternatives:

            1) Configure the kernel with CONFIG_PHYSICAL_START less than
               or equal to CONFIG_PHYSICAL_ALIGN.  Having done that, there
               is no problem; the resultant vmlinux file will be loaded at
               the address for which it was compiled, which has always
               been the case.
            2) Since /proc/kallsyms uses the same format as a System.map file,
               and since it reflects the relocated symbol addresses, it
               can be placed on the crash command line as if it were
               a System.map file.  (Note that the System.map file created
               by these relocated kernels contains the same "wrong" symbol
               values as the vmlinux file from which it was created.)
            3) On a live system that has /proc/kallsyms (i.e., the kernel was
               configured with CONFIG_KALLSYMS), this version of the crash
               utility will replace/patch the vmlinux symbol values with those
               seen in /proc/kallsyms.  The relocation value will be displayed
               as a WARNING message during initialization.
            4) On a dumpfile, the relocation will not be performed automatically
               as on a live system.  It will require the addition of the 
               /proc/kallsyms on the command line, or if run on a different
               host, a copy of the crashed system's /proc/kallsyms may be
               used.
            5) Alternatively on a dumpfile, a new command line option has been
               created to specify the relocation amount.  For example, if a  
               kernel was configured with a CONFIG_PHYSICAL_START value of 16MB
               and a CONFIG_PHYSICAL_ALIGN of 4MB, that results in a relocation
               of 12MB.  To specify that, enter "crash --reloc=12m ..." on the
               command line.  (Recall that if crash is run on the live system,
               a WARNING message will specify the relocation amount.)

           Using /proc/kallsyms or a --reloc=[size] as a command line argument
           is similar to using a System.map file, in that it results in the loss
           of the use of line number debug data.  (anderson@redhat.com)

           ...

>> My current config for
>>
>> CONFIG_PHYSICAL_START=0x1000000
>> CONFIG_RELOCATABLE=y
>> CONFIG_PHYSICAL_ALIGN=0x400000
>>
>> The /proc/kallsyms is diffrent between the System Kernel and Debug Kernel.
>> On the System Kernel it starts from 0x400000 .On the Debug kernel it
>> starts from 0x1000000.

So your configuration exactly matches paragraph 5) above, you should
be able to come up OK by entering either:

 $ crash vmlinux vmcore --reloc=12m

or

 $ crash vmlinux vmcore /proc/kallsyms

where the /proc/kallsyms is from the *primary* kernel, so option #2
will *not* work when running from the secondary kernel.

You didn't show any output of a live crash session (while running
on the primary kernel), but I believe it should work without using 
the /proc/kallsyms as an argument or using --reloc=12m option.  There
was a further fix for these configurations for running on live systems:

http://people.redhat.com/anderson/crash.changelog.html#5_1_4

5.1.4    - Fix for RT kernels in which the schedule() function has become a 
           ... [ cut] ...

         - Fix for running against live x86 kernels that were configured with
           CONFIG_PHYSICAL_START containing a value that is greater than its
           CONFIG_PHYSICAL_ALIGN value, and where the first symbol listed by
           /proc/kallsyms is not "_text".  Without the patch, the crash session
           fails during invocation with the error message "crash: vmlinux and
           /dev/mem do not match!" (or "/dev/crash" if applicable).  As a work-
           around, "/proc/kallsyms" can be entered on the command line, or the
           "--reloc=<size>" option could be used, but the fix obviates that
           requirement for live systems.  It should be noted that dumpfiles of
           kernels configured that way still do require that "/proc/kallsyms",
           or a copy of it, or alternatively the "--reloc=<size>" option, to
           be entered on the command line, as detailed in this changelog entry:
           http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5
           (anderson@redhat.com)

So on the live system on the primary kernel, I believe this should just work:

 $ crash vmlinux

Normally you don't even need to put the vmlinux file on the command line for
running on the live system because it will be "found" automatically unless
you've put it in some non-standard location.

Dave


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Crash-utility] crash read error: kernel virtual address / vmcore address mismatch ?
  2013-05-08 13:29     ` Dave Anderson
@ 2013-05-09  4:06       ` Anand Raj Manickam
  0 siblings, 0 replies; 4+ messages in thread
From: Anand Raj Manickam @ 2013-05-09  4:06 UTC (permalink / raw)
  To: Dave Anderson
  Cc: kexec,
	Discussion list for crash utility usage, maintenance and development

On Wed, May 8, 2013 at 6:59 PM, Dave Anderson <anderson@redhat.com> wrote:
>
>
>
> ----- Original Message -----
>> On Wed, May 8, 2013 at 11:23 AM, Anand Raj Manickam <anandrm@gmail.com>
>> wrote:
>> >> Hi ,
>> >> Sorry about re posting this as i did not find solution ...
>> >>
>> >> I m facing a issue where on
>> >>
>> >> #crash /data/linux-2.6.30.8/vmlinux /proc/vmcore
>> >
>> > Do yourself a favor and copy /proc/vmcore to somewhere on disk.  Then
>> > reboot the system into the original kernel, and run crash on the saved
>> > vmcore.  I've never seen crash run on a /proc/vmcore file from the
>> > secondary kernel.
>> >
>> > Also, after rebooting the the original kernel, please confirm that
>> > crash runs OK on the live system.
>> >
>> >
>> >> crash 6.1.6
>> >> Copyright (C) 2002-2013  Red Hat, Inc.
>> >> Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
>> >> Copyright (C) 1999-2006  Hewlett-Packard Co
>> >> Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
>> >> Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
>> >> Copyright (C) 2005, 2011  NEC Corporation
>> >> Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
>> >> Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
>> >> This program is free software, covered by the GNU General Public License,
>> >> and you are welcome to change it and/or distribute copies of it under
>> >> certain conditions.  Enter "help copying" to see the conditions.
>> >> This program has absolutely no warranty.  Enter "help warranty" for
>> >> details.
>> >>
>> >> GNU gdb (GDB) 7.3.1
>> >> Copyright (C) 2011 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 "i686-pc-linux-gnu"...
>> >>
>> >> crash: read error: kernel virtual address: c127a9c8  type: "cpu_possible_mask"
>> >
>> > Please show the full output of "crash -d8 vmlinux vmcore".
>>
>> After rebooting to the primary / live kernel
>>
>>    I have attached the output for "crash -d8 vmlinux /data/vmcore" in d8.txt
>
> Looking at the ELF header data in the debug output, your configuration
> does require special handling.  X86 kernels are typically not configured
> with CONFIG_PHYSICAL_START larger than CONFIG_PHYSICAL_ALIGN, because
> when that is done, the vmlinux unity-mapped symbol values do not match
> their relocated values when the kernel is loaded.  This entry in the
> crash.changelog describes the situation:
>
> http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5
>
> 4.0-4.5  - Addresses FC7/upstream x86 kernels that have been configured such
>            that the vmlinux symbol values do not match their relocated values
>            when loaded.  If CONFIG_PHYSICAL_START contains a value that is
>            greater then CONFIG_PHYSICAL_ALIGN, then this mismatch occurs.
>            Since the crash utility and its embedded gdb have always expected
>            that the compiled-in kernel symbol addresses are "real", the virtual
>            to physical translation fails, leading to an initialization-time
>            failure with the message: "crash: vmlinux and /dev/crash do not
>            match!" (/dev/mem or the dumpfile name may replace /dev/crash).
>            To deal with this issue, there are several alternatives:
>
>             1) Configure the kernel with CONFIG_PHYSICAL_START less than
>                or equal to CONFIG_PHYSICAL_ALIGN.  Having done that, there
>                is no problem; the resultant vmlinux file will be loaded at
>                the address for which it was compiled, which has always
>                been the case.
>             2) Since /proc/kallsyms uses the same format as a System.map file,
>                and since it reflects the relocated symbol addresses, it
>                can be placed on the crash command line as if it were
>                a System.map file.  (Note that the System.map file created
>                by these relocated kernels contains the same "wrong" symbol
>                values as the vmlinux file from which it was created.)
>             3) On a live system that has /proc/kallsyms (i.e., the kernel was
>                configured with CONFIG_KALLSYMS), this version of the crash
>                utility will replace/patch the vmlinux symbol values with those
>                seen in /proc/kallsyms.  The relocation value will be displayed
>                as a WARNING message during initialization.
>             4) On a dumpfile, the relocation will not be performed automatically
>                as on a live system.  It will require the addition of the
>                /proc/kallsyms on the command line, or if run on a different
>                host, a copy of the crashed system's /proc/kallsyms may be
>                used.
>             5) Alternatively on a dumpfile, a new command line option has been
>                created to specify the relocation amount.  For example, if a
>                kernel was configured with a CONFIG_PHYSICAL_START value of 16MB
>                and a CONFIG_PHYSICAL_ALIGN of 4MB, that results in a relocation
>                of 12MB.  To specify that, enter "crash --reloc=12m ..." on the
>                command line.  (Recall that if crash is run on the live system,
>                a WARNING message will specify the relocation amount.)
>
>            Using /proc/kallsyms or a --reloc=[size] as a command line argument
>            is similar to using a System.map file, in that it results in the loss
>            of the use of line number debug data.  (anderson@redhat.com)
>
>            ...
>
>>> My current config for
>>>
>>> CONFIG_PHYSICAL_START=0x1000000
>>> CONFIG_RELOCATABLE=y
>>> CONFIG_PHYSICAL_ALIGN=0x400000
>>>
>>> The /proc/kallsyms is diffrent between the System Kernel and Debug Kernel.
>>> On the System Kernel it starts from 0x400000 .On the Debug kernel it
>>> starts from 0x1000000.
>
> So your configuration exactly matches paragraph 5) above, you should
> be able to come up OK by entering either:
>

>  $ crash vmlinux vmcore --reloc=12m

This did the trick :-)

Great !! and Thanks Dave.

>
> or
>
>  $ crash vmlinux vmcore /proc/kallsyms
>
> where the /proc/kallsyms is from the *primary* kernel, so option #2
> will *not* work when running from the secondary kernel.
>
> You didn't show any output of a live crash session (while running
> on the primary kernel), but I believe it should work without using
> the /proc/kallsyms as an argument or using --reloc=12m option.  There
> was a further fix for these configurations for running on live systems:
>
> http://people.redhat.com/anderson/crash.changelog.html#5_1_4
>
> 5.1.4    - Fix for RT kernels in which the schedule() function has become a
>            ... [ cut] ...
>
>          - Fix for running against live x86 kernels that were configured with
>            CONFIG_PHYSICAL_START containing a value that is greater than its
>            CONFIG_PHYSICAL_ALIGN value, and where the first symbol listed by
>            /proc/kallsyms is not "_text".  Without the patch, the crash session
>            fails during invocation with the error message "crash: vmlinux and
>            /dev/mem do not match!" (or "/dev/crash" if applicable).  As a work-
>            around, "/proc/kallsyms" can be entered on the command line, or the
>            "--reloc=<size>" option could be used, but the fix obviates that
>            requirement for live systems.  It should be noted that dumpfiles of
>            kernels configured that way still do require that "/proc/kallsyms",
>            or a copy of it, or alternatively the "--reloc=<size>" option, to
>            be entered on the command line, as detailed in this changelog entry:
>            http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5
>            (anderson@redhat.com)
>
> So on the live system on the primary kernel, I believe this should just work:
>
>  $ crash vmlinux
>
> Normally you don't even need to put the vmlinux file on the command line for
> running on the live system because it will be "found" automatically unless
> you've put it in some non-standard location.
>
> Dave
>

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-05-09  4:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-07 13:40 crash read error: kernel virtual address / vmcore address mismatch ? Anand Raj Manickam
2013-05-07 14:18 ` [Crash-utility] " Dave Anderson
     [not found] ` <CAEyr1FQ6MGMJK1+dyrLF+YaPwDFa1d+WVeRe6fuKojPUJO--xQ@mail.gmail.com>
     [not found]   ` <CAEyr1FRhLFjyoqWKyQoMc4cQqqA8fX7bPA=MWpY-z2RK74fekQ@mail.gmail.com>
2013-05-08 13:29     ` Dave Anderson
2013-05-09  4:06       ` Anand Raj Manickam

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.