1WARNING::BUILDID(7stap) WARNING::BUILDID(7stap)
2
3
4
6 warning::buildid - build-id verification failures
7
8
9
10
12 Because systemtap's script translation / execution stages may be exe‐
13 cuted at different times and places, it is sometimes necessary to ver‐
14 ify certain invariants. One such invariant is that if a script was
15 informed by translate-time analysis of executables, then those same
16 executables need to be used at run time. This checking is done based
17 upon the build-id, a binary hash that modern (post-2007) compil‐
18 ers/toolchains add as an NT_GNU_BUILD_ID ELF note to object files and
19 executables. Use the readelf -n command to examine the build-ids of
20 binaries, if you are interested.
21
22
23 Only scripts are sensitive to executables' build-ids: generally those
24 that perform deep analysis of the binaries or their debuginfo. For
25 example, scripts that place .function or .statement probes, or use
26 stack backtrace-related tapset functions may be sensitive. Other
27 scripts that rely only on process.mark or kernel.trace probes do not
28 require debuginfo. See the DWARF DEBUGINFO section in the stap‐
29 probes(3stap) man page.
30
31
32 During translation, systemtap saves a copy of the relevant files'
33 build-ids within the compiled modules. At run-time, the modules com‐
34 pare the saved ones to the actual run-time build-ids in memory. The
35 warning message indicates that they did not match, so the module will
36 decline placing a probe that was computed based upon obsolete data.
37 This is important for safety, as placing them at an inappropriate
38 address could crash the programs. However, this is not necessarily a
39 fatal error, since probes unrelated to the mismatching binaries may
40 operate.
41
42
43 A build-id mismatch could be caused by a few different situations. The
44 main one is where the executable versions or architecture were differ‐
45 ent between the systemtap translation and execution times/places. For
46 example, one may run a stap-server on a slightly different version of
47 the OS distribution. Someone may have rebuilt a new kernel image, but
48 preserved the previous version numbers. The kernel running on the
49 workstation may be slightly different from the version being targeted -
50 perhaps due to a pending kernel upgrade leaving different files on disk
51 versus running in memory. If your OS distribution uses separate debug‐
52 info packages, the split .debug files may not exactly match the main
53 binaries.
54
55
56 To disable build-id verification warnings, if one is confident that
57 they are an artefact of build accidents rather than a real mismatch,
58 one might try the -DSTP_NO_BUILDID_CHECK option.
59
60
62 http://fedoraproject.org/wiki/Releases/FeatureBuildId,
63 stap(1),
64 stapprobes(3stap),
65 warning::debuginfo(7stap),
66 error::reporting(7stap)
67
68
69
70 WARNING::BUILDID(7stap)