Problems writing ELF dumps with makedumpfile 1.2.9
Ken'ichi Ohmichi
oomichi at mxs.nes.nec.co.jp
Mon Sep 29 00:19:20 EDT 2008
Hi Kevin,
Worth, Kevin wrote:
>> Could the fact that my kernel's page offset is different from the
>> defaut be the cause of the address being beyond the maximum?
>> (from the kernel config diff I sent before, changing the VMSPLIT
>> parameter, which gives the kernel 3GB of memory, causes the PAGE_OFFSET value to shift)
I have tried reproducing the problem by using your .config file on my
system just after you sent me it, but I cannot do it.
> worthk:~/makedumpfile-1.2.9$ patch -l -p1 --dry-run <v1.3.0-rc01.patch
> patching file Makefile
> Hunk #1 succeeded at 1 with fuzz 1.
> patching file ia64.c
> patching file makedumpfile-R.pl
> patching file makedumpfile.c
> patching file makedumpfile.h
> patching file x86.c
> patching file x86_64.c
>
> The fuzz messages is because I'm patching against a makefile that was
> modified by Ubuntu to use "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
> rather than "-D_FILE_OFFSET_BITS=64". Perhaps the difference between
> the Ubuntu version and this upstream setting should be resolved...
> Ubuntu changelog at https://launchpad.net/ubuntu/+source/makedumpfile
> with note "Use _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE instead of
> _FILE_OFFSET_BITS=64 for correct compilation." Could this have negative
> effects or is it just a different way to tell the compiler to support
> large files?
>
> CFLAGS = -g -O2 -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
> -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(DATE)"'
> CFLAGS_ARCH = -g -O2 -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
I will consider it.
> On to the actual testing- I wonder if I am worse off than before applying this patch...
>
> With command line "makedumpfile -D -E -d 31 -I $rootmnt/boot/vmcoreinfo /proc/vmcore $rootmnt/var/crash/vmcore"
> I get what appears to be a regression in check_release:
>
> readmem: Can't convert a virtual address(403c1364) to physical address.
> check_release: Can't get the address of system_utsname.
> LOAD (0)
> phys_start : 0
> phys_end : a0000
> virt_start : c0000000
> virt_end : c00a0000
> LOAD (1)
> phys_start : 100000
> phys_end : 1000000
> virt_start : c0100000
> virt_end : c1000000
> LOAD (2)
> phys_start : 5000000
> phys_end : 38000000
> virt_start : c5000000
> virt_end : f8000000
> LOAD (3)
> phys_start : 38000000
> phys_end : bf790000
> virt_start : ffffffffffffffff
> virt_end : 8778ffff
> LOAD (4)
> phys_start : 100000000
> phys_end : 140000000
> virt_start : ffffffffffffffff
> virt_end : 3fffffff
> Linux kdump
>
> max_mapnr : 140000
>
> PAE : ON
>
> makedumpfile Failed.
>
>
> If I change the command line to "makedumpfile -D -E -d 1 -I $rootmnt/boot/vmcoreinfo /proc/vmcore $rootmnt/var/crash/vmcore" (simply turn "-d" down to 1) I get
>
> Excluding zero pages : [ 33 %] readmem: Can't seek the dump memory(/proc/vmcore). Invalid argument
> create_2nd_bitmap: Can't exclude pages filled with zerocreate_2nd_bitmap: for creating an ELF dumpfile.
I guess that you don't apply v1.3.0-rc01.patch, because new error messages
of v1.3.0-rc01.patch are not printed in the above log.
If applying it, the below ~~~ messages should be printed.
readmem: Can't seek the dump memory(/proc/vmcore). (offset:XXX) Invalid argument
~~~~~~~~~~~~
exclude_zero_pages: Can't get the page data(pfn:YYY, max_mapnr:ZZZ)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can confirm makedumpfile's version by `makedumpfile -v` like
the following:
# makedumpfile -v
makedumpfile: version 1.3.0-rc01 (released on 26 September 2008)
#
Thanks
Ken'ichi Ohmichi
More information about the kexec
mailing list