Problems writing ELF dumps with makedumpfile 1.2.9

Ken'ichi Ohmichi oomichi at mxs.nes.nec.co.jp
Thu Sep 25 02:03:18 EDT 2008


Hi Kevin,

Thank you for the test and the report.

Worth, Kevin wrote:
> Wow! That was quick turn-around time- just over 12 hours!
> 
> The line breaks in the email caused problems with patching, and I'd rather not sync completely to the CVS tree,
> but I was able to just pull the patches from sourceforge using the following links
> http://makedumpfile.cvs.sourceforge.net/makedumpfile/makedumpfile/makedumpfile.c?r1=1.7.2.48&r2=1.7.2.49&view=patch
> http://makedumpfile.cvs.sourceforge.net/makedumpfile/makedumpfile/makedumpfile.h?r1=1.4.2.31&r2=1.4.2.32&view=patch
> http://makedumpfile.cvs.sourceforge.net/makedumpfile/makedumpfile/x86.c?r1=1.2.2.20&r2=1.2.2.21&view=patch
> 
> The diff looked identical to what you sent, so I patched the source and built.
> 
> It appears to now work fine when I specify "-d 31", and it continues to work on my system with 2GB of memory.

That is good.

> However, on my identically-configured (identical hardware too) system with 4GB of memory my log file contains.
> This was just triggered with an alt-sysrq-c.
> 
> ^MChecking for memory holes          : [  0 %] ^MChecking for memory holes
>     : [100 %] ^MExcluding unnecessary pages        : [100 %] ^MExcluding free pa
> ges               : [100 %] ^MExcluding zero pages               : [ 18 %] readm
> em: Can't seek the dump memory(/proc/vmcore). Invalid argument
> create_2nd_bitmap: Can't exclude pages filled with zerocreate_2nd_bitmap: for cr
> eating an ELF dumpfile.
> 
> makedumpfile Failed.

According to your test, lseek(2) failed by EINVAL in readmem().
I want to know the 'offset' value and the 'addr' value to solve it.
Could you test again with both the attached patch and yesterday patch ?

One more, please run makedumpfile with '-D' option for debugging,
and send me both the result and `readelf -a /proc/vmcore` output.
`readelf -a /proc/vmcore` output is useful, because the 'offset'
is taken by referring PT_LOAD header of ELF header,


Thanks
Ken'ichi Ohmichi


diff -puN makedumpfile.org/makedumpfile.c makedumpfile/makedumpfile.c
--- makedumpfile.org/makedumpfile.c	2008-09-25 14:59:52.000000000 +0900
+++ makedumpfile/makedumpfile.c	2008-09-25 14:59:00.000000000 +0900
@@ -257,8 +257,8 @@ readmem(int type_addr, unsigned long lon
 	}
 
 	if (lseek(info->fd_memory, offset, SEEK_SET) == failed) {
-		ERRMSG("Can't seek the dump memory(%s). %s\n",
-		    info->name_memory, strerror(errno));
+		ERRMSG("Can't seek the dump memory(%s). (%s) offset:%llx, addr:%llx\n",
+		    info->name_memory, strerror(errno), offset, addr);
 		return FALSE;
 	}
 



More information about the kexec mailing list