Dmesg not being dumped
Dave Anderson
anderson at redhat.com
Thu Aug 20 06:04:37 PDT 2015
----- Original Message -----
>
>
> On 08/19/2015 11:38 PM, Dave Anderson wrote:
> >
> >
> > ----- Original Message -----
> >>
> >> Hi,
> >>
> >> On 08/19/2015 12:02 PM, Baoquan He wrote:
> >>> On 08/19/15 at 09:21am, Nikolay Borisov wrote:
> >>>> Hello,
> >>>>
> >>>> I've recently noticed that when creating crashdumps the dmesg is not
> >>>> being saved. The error reported is this: "Missing the struct log size
> >>>> export". I've tested with both kernel 4.1.1 and 3.12.28. My version of
> >>>> kexec tools is : kexec-tools 2.0.9 released 04 June 2015. The kernel has
> >>>> been compiled with debugging info so the respective symbol should be
> >>>> exported but apparently it is not. Any ideas how to debug that?
> >>>
> >>> That would be more helpful if you can attach the 1st kernel and kdump
> >>> kernel console log.
> >>
> >> I just tested with 4.1.6 with the same result. I'm sending you a link to
> >> the bzImage in question
> >> http://georgi.unixsol.org/cruft/tmp/bzImage-4.1.6-clouder1 ( I assume
> >> you meant the bzImage, if you need I can provide the vmlinux as well).
> >> Unfortunately, I couldn't figure how to obtain the log of kdump in
> >> textual format (and didn't want to send pictures). Here are the 3
> >> relevant lines (from memory):
> >>
> >> Saving vmcore-dmesg.txt
> >> Missing the struct log size export
> >> Error saving vmcore-dmesg.txt.
> >>
> >> Yet, when I load the crashdump inside the 'crash' utility and invoke the
> >> 'log' command the dmesg log is there. Whereas the vmcore-dmesg-incomplete.txt is empty.
> >
> > FYI -- the crash utility doesn't use the vmcoreinfo data for its "log" command,
> > but you can dump the vmcore's header contents, including the vmcoreinfo strings,
> > with the "help -n" command. For example:
>
> Thanks for the tip, using that I can confirm that the actual symbols are
> in the resulting vmcoreinfo:
>
> SIZE(printk_log)=16
> OFFSET(printk_log.ts_nsec)=0
> OFFSET(printk_log.len)=8
> OFFSET(printk_log.text_len)=10
> OFFSET(printk_log.dict_len)=12
>
> So the required symbol is there (printk_log) but for some reason kexec
> cannot read it... I tried creating an uncompressed crash (removing the
> -c option from the makedumpfile command to no avail)..
The vmcoreinfo data strings were initially located in an ELF note in /proc/vmcore.
When makedumpfile -c was run on /proc/vmcore, it copied those ELF notes into the
compressed kdump header, and you have dumped them above.
So it seems to be an issue with vmcore-dmesg. If you change the core_collector
variable to "cp" or "scp", it will copy /proc/vmcore unmodified to the target
location. Then you can run vmcore-dmesg on that file to debug it.
Dave
More information about the kexec
mailing list