Paper check About

KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs

2008 · paper · Computer science

Presents KLEE, a symbolic execution tool that automatically generates high-coverage tests. On GNU Coreutils it averaged over 90% line coverage, beating developers' hand-written tests, and across 452 applications it found 56 serious bugs.

Checked: PDF from usenix.org, fetched 4 Oct 2026. Page numbers are those of that PDF.

5 findings

Substance Introduction item 7 says "76.4% (with disk) and 67.1% (without disk)", but Table 4 gives KLEE 67.1% With Disk and 76.4% No Disk.
  • p. 2 Introduction, contribution 7
    achieved an average line coverage of 76.4% (with disk) and 67.1% (without disk)
  • p. 14 Table 4
    With Disk 50.1% 67.1% 4617
  • p. 14 Section 5.6 text
    both for runs with (+17.0%) and without (+28.4%) a disk
  • p. 2 Intro, item 7
    76.4% (with disk) and 67.1% (without disk)

Judge's note: Table 4 (p14) gives With Disk: Random 50.1%, KLEE 67.1%; No Disk: Random 48.0%, KLEE 76.4%. The §5.6 deltas (+17.0% with disk, +28.4% without) match Table 4, and §5.6 also says the with-disk configuration leaves more code uncovered. Only the Introduction (p2) has the two labels the other way round. It is the same experiment, so there is no different-quantity explanation.

Second check: another model agreed

Report a problem with this finding
Substance The Introduction says the quick runs covered "77 MINIX utilities", while §5.4 says "all 279 BUSYBOX tools and 84 MINIX tools".
  • p. 2 Introduction, experiment categories
    an additional 204 BUSYBOX util- ities and 77 MINIX utilities
  • p. 12 Section 5.4
    all 279 BUSYBOX tools and 84 MINIX tools [4]
  • p. 12 §5.4
    279 BUSYBOX tools and 84 MINIX tools
  • p. 2 Intro, experiment categories
    204 BUSYBOX util- ities and 77 MINIX utilities

Only the authors can say what is right here.

Judge's note: I viewed p2 and p12. The BusyBox counts agree (75+204=279). The 452 total in the abstract and conclusion equals 89 COREUTILS + 279 BusyBox + 84 MINIX, so it matches 84, not 77. The paper does not say anywhere that 77 is a subset of the 84. Only the authors can say which count is right.

Second check: another model agreed

Report a problem with this finding
Substance §2.2 step 2 says "adding the constraint argc > 1 on the false path and argc ≤ 1 on the true path"; for the branch argc > 1 the true path carries argc > 1 and the false path argc ≤ 1.
  • p. 4 Section 2.2, step 2
    adding the constraint argc > 1 on the false path and argc ≤ 1 on the true path

Judge's note: I viewed p4. The branch condition is argc > 1 at line 33. As printed, the constraints are attached to the opposite paths. No reading makes the printed version correct.

Second check: another model agreed

Report a problem with this finding
Substance §3.3 Expression Rewriting gives the example "simple arithmetic simplifications (x + 0 = 0)"; the identity is x + 0 = x.
  • p. 5 Section 3.3, Expression Rewriting
    simple arithmetic sim- plifications (x + 0 = 0)
  • p. 5 §3.3 Expression Rewriting
    (x + 0 = 0)

Judge's note: The p5 image shows "x + 0 = 0" in typewriter font. This is false for any x ≠ 0. The other two examples (x * 2^n = x << n; 2*x - x = x) are correct identities.

Second check: another model agreed

Report a problem with this finding
Substance The intro (p.2, item 7) says HiStar coverage was "76.4% (with disk) and 67.1% (without disk)", but Table 4 gives With Disk KLEE 67.1% and No Disk KLEE 76.4%. The two are swapped in the intro.
  • p. 14
    both for runs with (+17.0%) and without

Judge's note: The p.14 image shows Table 4 with Random/KLEE values of 50.1%/67.1% for With Disk and 48.0%/76.4% for No Disk. The §5.6 deltas match the table: +17.0 with disk and +28.4 without. The text's remark that much code is uncovered when a disk is configured also fits the lower with-disk value. The p.2 image shows the intro with the labels reversed. The defect is in the intro, not in §5.6.

Second check: another model agreed

Report a problem with this finding
20 minor (typos and the like; most checked by the judge only)
Wording The Introduction says "we ran KLEE on more than 452 programs", while the Abstract ("applying it to 452 applications") and Conclusion ("check 452 applications") give exactly 452.
  • p. 2 Introduction
    In total, we ran KLEE on more than 452 programs
  • p. 1 Abstract
    applying it to 452 applications
  • p. 15 Conclusion
    we used KLEE to check 452 applications

Judge's note: I viewed p2. 89+279+84=452 accounts for exactly 452. The HiStar kernel or other runs could justify "more than", but the wording is inconsistent with the other two statements.

Second check: another model agreed

Report a problem with this finding
Wording The Introduction says "all COREUTILS bugs were confirmed and fixed within two days", but §5.2.3 says the seq bug had already been fixed in an unreleased version and "the other bugs were confirmed and fixed within two days".
  • p. 2 Introduction, contribution item 5
    all COREUTILS bugs were confirmed and fixed within two days
  • p. 10 Section 5.2.3
    While one bug (in seq) had been fixed in the develop- ers’ unreleased version, the other bugs were confirmed and fixed within two days of our report.

Judge's note: I viewed p10 §5.2.3 and p2 item 5. The Introduction's "all" slightly overstates §5.2.3, which excludes seq because it had already been fixed. This is a minor overstatement.

Second check: another model agreed

Report a problem with this finding
Wording "STP accounts for 92% of overall execution time on average (the combined optimizations reduce this by almost 300%)": a reduction of more than 100% is not possible, and the figures given do not show what the 300% refers to.
  • p. 6 Section 3.3, paragraph after Figure 2
    the combined optimizations reduce this by almost 300%

Only the authors can say what is right here.

Judge's note: I viewed p6. A share drop from 92% to 41% is about 55% relative (a factor of 2.2). Table 1 STP time goes from 281 s to 10 s, about 96% lower (a factor of 28). Neither gives 300%. The authors should say what quantity and ratio is meant.

Second check: another model agreed

Report a problem with this finding
Wording The Table 2 caption reads "Number of COREUTILS tools which achieve line coverage in the given ranges", but the table also has two BUSYBOX columns, which the caption does not mention.
  • p. 9 Table 2 caption
    Number of COREUTILS tools which achieve line coverage in the given ranges

Judge's note: The p.9 image shows Table 2 with COREUTILS and BUSYBOX column groups, and the caption names only COREUTILS. The 'last rows shows' grammar point is handled in C019.

Second check: another model agreed

Report a problem with this finding
Wording §5.3 says "over 90.5% total line coverage" for BUSYBOX, while Table 2 and the same paragraph give exactly 90.5%.
  • p. 12 Section 5.3
    over 90.5% total line coverage
  • p. 9 Table 2, Overall cov., BUSYBOX KLEE
    90.5%

Judge's note: The p.12 crop shows 'over 90.5%' and, later in the same paragraph, '90.5% total line coverage'. Table 2 (p.9) gives Overall cov. 90.5% for BUSYBOX KLEE tests, and the intro also says 90.5%. 'Over' may be a leftover from 'over 90%'. The unrounded value could exceed 90.5%, so this is only a consistency point.

Second check: another model agreed

Report a problem with this finding
Wording §5.2.3 says "When input_position is positive, width will be less than T since 0 ≤ input_position mod T < T", but with width = T − (input_position mod T) the bound gives 0 < width ≤ T, not width < T.
  • p. 10 Section 5.2.3
    is positive, width will be less than T since 0 ≤ input position mod T < T

Only the authors can say what is right here.

Judge's note: Reworked from the p.10 image. width = T − m with 0 ≤ m < T gives T ≥ width > 0. When m = 0 (input_position a multiple of T), width = T, so the strict 'less than T' is false as printed. The point being made (no out-of-bounds write for non-negative input_position) still stands with ≤ T, so the stated result is unaffected.

Second check: another model agreed

Report a problem with this finding
Typo The text cites "Hoffmann and Hoehler [28]", but reference [28] is "HOFFMANN, J., AND KOEHLER, J."
  • p. 5 Section 3.3, Counter-example Cache
    structure of Hoffmann and Hoehler [28]
  • p. 16 Reference [28]
    HOFFMANN, J., AND KOEHLER, J.
  • p. 16 Reference [28]
    HOFFMANN, J., AND KOEHLER, J. A new method to index and query sets.
  • p. 5 §3.3 Counter-example Cache
    Hoffmann and Hoehler [28]

Judge's note: The p5 image shows "Hoehler"; the p16 reference list shows "KOEHLER". The internal inconsistency is a misspelling in the text.

Second check: none (judge only)

Report a problem with this finding
Typo There is a stray article in "Note that the simply selecting a state at random has neither property."
  • p. 6 Section 3.4, end of Random Path Selection paragraph
    Note that the simply selecting a state at random

Judge's note: The p6 image shows "Note that the simply selecting"; it should read "Note that simply selecting".

Second check: none (judge only)

Report a problem with this finding
Typo Both open() examples in §4.1 use the misspelled flag "O_RDNLY" instead of O_RDONLY: "int fd = open("/etc/fstab", O_RDNLY);" and "int fd = open(argv[1], O_RDNLY);"
  • p. 7 Section 4.1 code examples
    int fd = open("/etc/fstab", O_RDNLY);
  • p. 7 4.1 code examples
    open("/etc/fstab", O_RDNLY)
  • p. 7 4.1 code examples
    open(argv[1], O_RDNLY)

Judge's note: The crops of p.7 show O_RDNLY in both code lines. This is a typeset misspelling, not an extraction artefact.

Second check: none (judge only)

Report a problem with this finding
Typo Duplicated article in §5.1 item 2: "can only hit a small a fraction".
  • p. 8 Section 5.1, item 2
    can only hit a small a fraction

Judge's note: The p.8 crop shows "a small a fraction" as printed.

Second check: none (judge only)

Report a problem with this finding
Typo Grammar slips on p.9: "only emitting tests cases" (should be 'test cases') and "The last rows shows the aggregate" (number disagreement).
  • p. 9 5.1 end
    only emitting tests cases
  • p. 9 Table 2 caption
    The last rows shows the aggregate

Judge's note: The p.9 crop shows both phrases as printed.

Second check: none (judge only)

Report a problem with this finding
Typo §5.2.2: "the output pro-duces by a different implementation" should read 'produced by'.
  • p. 10 5.2.2
    the output pro-duces by a different implementation

Judge's note: The p.10 crop shows 'pro-duces by'. The hyphen is a line break, but the verb form is wrong.

Second check: none (judge only)

Report a problem with this finding
Typo §5.2.4: "constraint solver overhead made paths ran 7x to 220x more slowly" should read 'made paths run'.
  • p. 11 5.2.4
    made paths ran 7x to 220x more slowly

Judge's note: The p.11 crop shows 'made paths ran' as printed.

Second check: none (judge only)

Report a problem with this finding
Typo §5.5 has a stray word: "a test case that can be run to natively to confirm the difference".
  • p. 13 Section 5.5, crosschecking infrastructure
    a test case that can be run to natively to confirm the difference
  • p. 13 5.5
    can be run to natively to confirm the difference

Judge's note: The p.13 crop shows 'can be run to natively' as printed.

Second check: none (judge only)

Report a problem with this finding
Typo Acknowledgements: "We thank our shepard Terence Kelly" should read 'shepherd'.
  • p. 15 Acknowledgements
    We thank our shepard Terence Kelly
  • p. 15 Acknowledgements
    our shepard Terence Kelly

Judge's note: The p.15 crop shows 'shepard' as printed.

Second check: none (judge only)

Report a problem with this finding
Typo The Conclusion opens the phrase with a closing quotation mark: "”out of the box.”".
  • p. 15 Section 7 Conclusion, first paragraph
    ”out of the box.”

Judge's note: The p.15 crop shows a reversed opening quote. Section 5.2.1 (p.9) typesets it correctly as “out of the box”.

Second check: none (judge only)

Report a problem with this finding
Typo Subject–verb agreement error in the Conclusion: "its reasoning allow it to prove properties of paths" should read "its reasoning allows it".
  • p. 15 Section 7 Conclusion, second paragraph
    its reasoning allow it to prove properties of paths
  • p. 15 7 Conclusion
    its reasoning allow it to prove properties
  • p. 15
    its reasoning allow

Judge's note: Checked the crop of p.15, Conclusion, second paragraph. The printed text reads "because KLEE's constraints have no approximations, its reasoning allow it to prove properties of paths". The subject 'reasoning' is singular, so the verb should be 'allows'.

Second check: none (judge only)

Report a problem with this finding
Typo Stray comma between subject and verb in the Conclusion: "Our system KLEE, automatically generated tests that...".
  • p. 15 Section 7 Conclusion, first paragraph
    Our system KLEE, automatically generated tests

Judge's note: Checked the crop of p.15, Conclusion, first paragraph. The printed text reads "Our system KLEE, automatically generated tests that, on average, covered...". There is a single comma between subject and verb and no closing comma for an appositive. Punctuation slip.

Second check: none (judge only)

Report a problem with this finding
Typo Duplicated word in reference [36]: "CUTE: A concolic unit testing engine for C. In In 5th joint meeting of the European Software Engineering Conference...".
  • p. 16 Reference [36]
    In In 5th joint meeting of the European
  • p. 16 Reference [36]
    In In 5th joint meeting of the European Software Engineering Conference
  • p. 16 Reference [36]
    In In 5th joint meeting

Judge's note: Checked the page-16 crop. The image shows "In" in roman type followed by "In 5th joint meeting" in italics. The word really is printed twice, so this is not an extraction artefact.

Second check: none (judge only)

Report a problem with this finding
Typo Incorrect ordinal suffix in reference [20]: "Proceedings of the 21th ACM Symposium on Operating Systems Principles (SOSP 2007)" should read "21st".
  • p. 16 Reference [20]
    Proceedings of the 21th ACM Symposium on Operating Systems Principles (SOSP 2007)
  • p. 16 Reference [20]
    21th ACM Symposium on Operating Systems Principles

Judge's note: Checked the page-16 crop. Reference [20] prints "21th". Whatever the true edition number is, '21th' is not a valid ordinal, so the fix is '21st'. Nearby references use valid ordinals ("20th" in [21], "29th" in [34]).

Second check: none (judge only)

Report a problem with this finding
Something wrong with this page, or a finding we missed?