ERROR: Build-id mismatch: "kernel" vs. "vmlinux" byte 0 (0x00 vs 0x00)

Frank Ch. Eigler fche@redhat.com
Thu Apr 8 18:30:00 GMT 2010


Hi -

> The tcp_trace.stp works fine with systemtap 1.1 on  my system, but 1.2 
> and the newer snapshots fail.

OK, that's good information.  Next step then is to run stap -k with
both versions, and compare the /tmp/stapXXXX/* files, expecially
stap-symbols.h.  They should be the same, specifically they should
include the same buildid bytes / addresses.  That would leave only
the buildid checking logic as different.  The new code in runtime/sym.c
does this:

      set_fs(KERNEL_DS);
      rc1 = get_user(theory,((unsigned char*) &m->build_id_bits[j]));
      rc2 = get_user(practice,((unsigned char*) (void*) (notes_addr+j)));
      set_fs(oldfs);

in order to fetch two bytes from kernel space (from not entirely
reliable addresses).  The old code just memcmp'd the whole arrays
(leading to crashes in the case of not entirely correct addresses).


- FChE



More information about the Systemtap mailing list