[Bug 1190434] crash is unable to find debuginfo of usrmerged kernel
https://bugzilla.suse.com/show_bug.cgi?id=1190434 https://bugzilla.suse.com/show_bug.cgi?id=1190434#c27 --- Comment #27 from David Mair <dmair@suse.com> --- The following error:
WARNING: invalid linux_banner pointer: 65762078756e694c crash: /var/tmp/vmlinux.xz_CSsIpp and /var/crash/2023-05-02-00:13/vmcore do not match!
Occurs due to this:
if (!(sp = symbol_search("linux_banner"))) error(FATAL, "linux_banner symbol does not exist?\n"); else if ((sp->type == 'R') || (sp->type == 'r') || (THIS_KERNEL_VERSION >= LINUX(2,6,11) && (sp->type == 'D' || sp->type == 'd')) || (machine_type("ARM") && sp->type == 'T') || (machine_type("ARM64"))) linux_banner = symbol_value("linux_banner"); else get_symbol_data("linux_banner", sizeof(ulong),
I've re-arranged that slightly to separate the two conditionals, it appears in crash as a triplet conditional but should operate as above. It is followed by:
if (!IS_KVADDR(linux_banner)) error(WARNING, "invalid linux_banner pointer: %lx\n", linux_banner);
if (!accessible(linux_banner)) goto bad_match;
The test for a valid banner is after this but we take the goto bad_match above because 0x65762078756e694c is ASCII text and is not a KV_ADDR (causing the WARNING "invalid linux_banner pointer". It is not an accessible memory address so we goto bad_match even though we are looking at the value of a correct linux_banner. You can see the two de-references I described in the code above. symbol_search() gets a structure with a value member that is the address in the coredump of the "linux_banner" symbol. We load that successfully from the coredump and take the else path in the first conditional where the "type" member of the structure has the value 'R' (character) in the coredump I'm looking at so we take the true path of the second conditional in the top piece of code and should use the symbol_value() function to set linux_banner from the value member of an instance of the same structure as sp. That value is NOT 0x65762078756e694c and if I hack a patch for the above code to force:
linux_banner = sp->value
rather than use symbol_value("linux_banner") then I DO NOT get the failure at the top of this message...though with the coredump I have I still can't load it due to pages excluded from it for per-CPU tasks. -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@suse.com