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; }