Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation
ACM SIGPLAN Notices, 2007 · paper · Computer science
Describes Valgrind, a dynamic binary instrumentation framework with special support for shadow values, which track extra information about every register and memory value. Lightweight tools run comparatively slowly, but heavyweight tools are possible that other frameworks make difficult.
Checked: PDF from valgrind.org, fetched 4 Oct 2026. Page numbers are those of that PDF.
2 findings
Reference or label Section 4, R1 (p.8): "This third feature is also crucial for performance, because it means that client code and analysis code can be interleaved arbitrarily by the back-end" describes the fourth feature ('all code is treated equally'), not the third (RISC-ness exposing intermediate values).
- p. 8 Section 4, R1, paragraph after 'Fourth'
This third feature is also crucial for performance, because it means that client code and analysis code can be interleaved arbitrarily by the back-end.
- p. 8 Sec 4, R1, last paragraph
This third feature is also crucial for performance
Judge's note: Full page 8 image checked. The paragraph follows the 'Fourth' item. Its content (back-end interleaving, the register allocator treating guest and shadow registers equally) follows from feature four. The internal pointer is off by one.
Second check: another model agreed
Report a problem with this finding
Wording Section 4, R1 (p.8) says "Valgrind has three noteworthy features that make shadow registers easy to use" but then lists four (First, Second, Third, "Fourth, all code is treated equally.").
- p. 8 Section 4, R1 paragraph
Valgrind has three noteworthy features that make shadow registers easy to use.
- p. 8 Section 4, R1, fourth item
Fourth, all code is treated equally.
- p. 8 Sec 4, R1
Valgrind has three noteworthy
- p. 8 Section 4, R1
This third feature is also crucial for performance
Judge's note: Full page 8 image checked: the four items are set out in parallel, each opening with an ordinal and a bold-italic phrase. 'three' should be 'four'. The off-by-one reference 'This third feature' is a separate defect, judged under C011.
Second check: another model agreed
Report a problem with this finding
18 minor (typos and the like; most checked by the judge only)
Substance Section 5.4 (p.10) says "Memcheck’s mean slow-down factor is 22.2x" but the geo. mean row of Table 2 gives 22.1 for Memc.
- p. 10 Section 5.4, 'Heavyweight tools built with Valgrind'
Memcheck’s mean slow-down factor is 22.2x.
- p. 10 Table 2, geo. mean row, Memc. column
22.1
- p. 10 Sec 5.4, Heavyweight tools paragraph
Memcheck’s mean slow-
- p. 10 Table 2, geo. mean row, Memc. column
geo. mean 4.3 8.8 13.5 22.1
Judge's note: Full page 10 image checked. Recomputed the geometric mean of the 25 Memc. values in Table 2: the natural logs sum to about 77.397, the mean log is 3.0959, and exp of that is about 22.11, matching the table's 22.1. The arithmetic mean is 24.6, so it does not explain 22.2 either. The same paragraph's Nulgrind 4.3x matches the table. Per-row rounding is very unlikely to move 22.106 to 22.15 or above. The discrepancy is small.
Second check: another model agreed
Report a problem with this finding
Wording Section 3.7 Phase 2 says "Statements 6, 7 and 16 are removed, because they are made redundant by the GET statements introduced by the flattening of statement 2". This reason fits statement 7 only.
- p. 5 Section 3.7, Phase 2, last bullet
Statements 6, 7 and 16 are removed, because they are made redundant by the GET statements introduced by the flattening of statement 2.
- p. 5 Figure 1, statements 3, 6, 13, 16
3: PUT(0) = LDle:I32(t0)
Only the authors can say what is right here.
Judge's note: Checked Figure 1 on p.5. Statement 6 (t3 = GET:I32(0), %eax) comes after statement 3 (PUT(0) = LDle:I32(t0)), so it reads the loaded value, not the pre-load %eax that statement 2 reads. Statement 16 (t4 = GET:I32(0)) comes after statement 13 (PUT(0) = t1), so it reads t1. Only statement 7 (GET:I32(12), %ebx) has no intervening PUT to offset 12, so only it duplicates a GET from flattening statement 2. Statements 6 and 16 can still be removed by forwarding the PUT value to the GET, so the removal itself is plausible. Figure 2 (p.6) covers only the movl and does not show how they were handled. The authors should say whether the reason should read 'made redundant by the preceding PUTs (statements 3 and 13) and the GETs from statement 2'.
Second check: another model agreed
Report a problem with this finding
Typo Footnote 1 (p.1) repeats words: "Purify is not a shadow value tool as it does not does not track definedness of values through registers".
- p. 1 Footnote 1
it does not does not track definedness
- p. 1 footnote 1
as it does not does not track
- p. 1 Footnote 1
does not does not track
- p. 4 3.5
must must be
Judge's note: Checked the page 1 crop: 'does not does not' is printed in footnote 1. The other quotes merged into this cluster ('must must', 'it it', 'and and', 'with with', 'believe and') are judged separately under C005, C004, C006, C009 and C015.
Second check: none (judge only)
Report a problem with this finding
Typo Section 1.2 (p.1) has an extra article: "all the prior operations that contributed to the each value’s creation".
- p. 1 Section 1.2, Redux paragraph
contributed to the each value’s creation
Judge's note: The page 1 crop shows 'to the each value’s creation' in the Redux paragraph. One of 'the' or 'each' should be deleted.
Second check: none (judge only)
Report a problem with this finding
Typo Section 5.4 (p.11) uses the wrong article: "has an mean slow-down factor of 5.5x" (should be 'a mean'). Also, reference [23] (p.12) title is misspelt: "A low-oeverhead practical information flow tracking system".
- p. 11 Section 5.4, 'Other heavyweight tools', TaintTrace sentence
has an mean slow-down factor of 5.5x
- p. 11 Section 5.4, Other heavyweight tools (TaintTrace)
has an mean slow-down factor of
- p. 11 TaintTrace paragraph
has an mean slow-down factor
- p. 4 3.5
D&R may not suitable
Judge's note: Checked the page 11 crop for 'an mean' and the page 12 crop for 'low-oeverhead' in ref [23]. Both are in the printed text. The other merged quotes ('may not suitable', 'the the', 'to the each', 'and and') are judged under C007, C003, C002 and C006.
Second check: none (judge only)
Report a problem with this finding
Typo Section 3.3 (p.3) repeats a word: "such as the the address space manager".
- p. 3 Section 3.3, paragraph on core initialisation
such as the the address space manager
- p. 3
ses some sub-systems, such as the the address space manag
Judge's note: The page 3 crop shows 'such as the' at the end of one line and 'the address space manager' at the start of the next. The duplicate is in the printed text.
Second check: code check
Report a problem with this finding
Typo Section 3.3 (p.4) repeats a word: "Second, it it avoids dependencies on other tools".
- p. 4 Section 3.3 continuation, first paragraph
Second, it it avoids dependencies
- p. 4
l over memory layout. Second, it it avoids dependencies
Judge's note: Confirmed in the page 4 crop.
Second check: code check
Report a problem with this finding
Typo Section 3.5 (p.4) repeats a word: "The added analysis code must must be interleaved with the original code".
- p. 4 Section 3.5, C&A paragraph
The added analysis code must must be
- p. 4 Section 3.5
must must be
- p. 4
tion. The added analysis code must must be interleaved with
Judge's note: Confirmed in the page 4 crop.
Second check: code check
Report a problem with this finding
Typo Footnote 3 (p.4) reads "one for the client, and and for Valgrind and the tool"; it should read "and one for Valgrind".
- p. 4 Footnote 3
one for the client, and and for Valgrind and the tool
- p. 4 footnote 3
and and for Valgrind
- p. 4
ess space—one for the client, and and for Valgrind and th
Judge's note: Confirmed in the page 4 crop of footnote 3.
Second check: code check
Report a problem with this finding
Typo Section 3.5 (p.4) is missing a verb: "D&R may not suitable for some tools that require low-level information" (should be 'may not be suitable').
- p. 4 Section 3.5
D&R may not suitable for some tools
Judge's note: Confirmed in the page 4 crop (the same image as C006-a).
Second check: none (judge only)
Report a problem with this finding
Typo Section 3.7 Phase 1 (p.5) repeats a word: "was less accurate with with Valgrind’s old IR".
- p. 5 Section 3.7, Phase 1, statements 9–12 bullet
was less accurate with with Valgrind’s old IR
- p. 5 Phase 1 bullet
less accurate with with Valgrind’s old IR
- p. 5
tion codes was less accurate with with Valgrind’s old IR,
Judge's note: Confirmed in the page 5 crop and the full page.
Second check: code check
Report a problem with this finding
Typo Section 5.2 (p.9) has a stray conjunction in a semicolon list: "their large number of users; and the range of programs with which they have been successfully used; the range of platforms they support; and some design decisions".
- p. 9 Section 5.2, second paragraph
their large number of users; and the range of programs
Judge's note: The page 9 crop shows 'and' both after the first item and before the last item of the four-item list. The first 'and' is redundant.
Second check: none (judge only)
Report a problem with this finding
Typo Section 5.4 (p.11) has a stray word: "We also believe and that Valgrind’s design features ... are crucial".
- p. 11 Section 5.4, final paragraph
We also believe and that Valgrind’s design features
- p. 11 end of Section 5.4
We also believe and
- p. 11
We also believe and that Valgrind’s design
Judge's note: Confirmed in the page 11 crop.
Second check: none (judge only)
Report a problem with this finding
Typo Stray article on p.11, Section 5.4: "This meant that the Valgrind and Memcheck’s performance on FP/SIMD code was much worse"
- p. 11 Section 5.4, FP/SIMD bullet
This meant that the Valgrind and Memcheck’s performance
Judge's note: The crop of p.11 shows the text as quoted. Nowhere else does the paper write 'the Valgrind', and the article does not fit the compound possessive. This is a cosmetic slip.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [23] title is misspelt: "Lift: A low-oeverhead practical information flow tracking system" should read 'low-overhead'
- p. 12 Reference [23]
A low-oeverhead practical information flow tracking system
- p. 12 ref [23]
low-oeverhead practical
Judge's note: The page-image crop of ref [23] on p.12 clearly shows 'low-oeverhead', so this is not an extraction artefact. It is a plain misspelling.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [14] title reads "Automatic logging of operation system effects to guide application-level architecture simulation"; 'operating system' appears intended
- p. 12 Reference [14]
tomatic logging of operation system effects to guide application-level
- p. 12 ref [14]
operation system effects
Only the authors can say what is right here.
Judge's note: Rests on outside knowledge: that the published SIGMetrics 2006 title says 'operating system effects'. The crop of ref [14] on p.12 shows 'operation system effects', and 'operation system' is not a standard term, so this is very likely a slip.
Second check: none (judge only)
Report a problem with this finding
Typo The conclusion on p.12 writes "It is designed to support DBA heavyweight tools", while the rest of the paper writes 'heavyweight DBA tools'
- p. 12 Section 7, first sentence block
It is designed to support DBA heavyweight tools
Judge's note: The crop of p.12 shows the wording as quoted. A text search finds 'heavyweight DBA tools' in the abstract (line 17) and twice more in Section 7 (lines 1616 and 1618). The transposed order appears only here. This is a minor consistency point.
Second check: none (judge only)
Report a problem with this finding
Typo Section 6 on p.12 reads "were discussed in Section 1.2 and 5.4"; with two sections cited, 'Sections' would be expected
- p. 12 Section 6
Section 1.2 and 5.4
Judge's note: The crop of p.12 shows the singular 'Section' before two section numbers. The paper elsewhere writes 'Sections 3.5 and 3.6' (p.11 crop), so the singular here is inconsistent. It is cosmetic.
Second check: none (judge only)