NAME | DESCRIPTION | SEE ALSO | COLOPHON

ERROR::BUILDID(7stap)                                  ERROR::BUILDID(7stap)

NAME         top

       error::buildid - build-id verification failures

DESCRIPTION         top

       Because systemtap's script translation / execution stages may be
       executed at different times and places, it is sometimes necessary to
       verify certain invariants.  One such invariant is that if a script
       was informed by translate-time analysis of executables, then those
       same executables need to be used at run time.  This checking is done
       based upon the build-id, a binary hash that modern (post-2007)
       compilers/toolchains add as an NT_GNU_BUILD_ID ELF note to object
       files and executables.  Use the readelf -n command to examine the
       build-ids of binaries, if you are interested.

       Only scripts are sensitive to executables' build-ids: generally those
       that perform deep analysis of the binaries or their debuginfo.  For
       example, scripts that place .function or .statement probes, or use
       stack backtrace-related tapset functions may be sensitive.  Other
       scripts that rely only on process.mark or kernel.trace probes do not
       require debuginfo.  See the DWARF DEBUGINFO section in the
       stapprobes(3stap) man page.

       During translation, systemtap saves a copy of the relevant files'
       build-ids within the compiled modules.  At run-time, the modules
       compare the saved ones to the actual run-time build-ids in memory.
       The error message indicates that they did not match, so the module
       will decline placing a probe that was computed based upon obsolete
       data.  This is important for safety, as placing them at an
       inappropriate address could crash the programs.  However, this is not
       necessarily a fatal error, since probes unrelated to the mismatching
       binaries may operate.

       A build-id mismatch could be caused by a few different situations.
       The main one is where the executable versions or architecture were
       different between the systemtap translation and execution
       times/places.  For example, one may run a stap-server on a slightly
       different version of the OS distribution.  Someone may have rebuilt a
       new kernel image, but preserved the previous version numbers.  The
       kernel running on the workstation may be slightly different from the
       version being targeted - perhaps due to a pending kernel upgrade
       leaving different files on disk versus running in memory.  If your OS
       distribution uses separate debuginfo packages, the split .debug files
       may not exactly match the main binaries.

       To disable build-id verification errors, if one is confident that
       they are an artefact of build accidents rather than a real mismatch,
       one might try the -DSTP_NO_BUILDID_CHECK option.

SEE ALSO         top

       http://fedoraproject.org/wiki/Releases/FeatureBuildId ,
       stap(1),
       stapprobes(3stap),
       warning::debuginfo(7stap),
       error::reporting(7stap)

COLOPHON         top

       This page is part of the systemtap (a tracing and live-system
       analysis tool) project.  Information about the project can be found
       at ⟨https://sourceware.org/systemtap/⟩.  If you have a bug report for
       this manual page, send it to systemtap@sourceware.org.  This page was
       obtained from the project's upstream Git repository 
       ⟨git://sourceware.org/git/systemtap.git⟩ on 2017-05-03.  If you dis‐
       cover any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page, or
       you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a mail
       to man-pages@man7.org

                                                       ERROR::BUILDID(7stap)