Skip to content
STIMSMITH

Differential Testing

Technique WIKI v3 · 8/12/2026

Differential testing is used in SearchSYS-based ARM simulator testing by running generated or fuzzed programs on real ARM hardware and on the gem5 ARM simulator, then inspecting mismatches between native and simulated behavior. The Search+LLM-based Testing for ARM Simulators artifact provides scripts for single-input comparisons and folder-level differential-testing campaigns, with manual log analysis required because some simulation failures can be expected outcomes of corrupted binaries rather than simulator bugs.

Overview

Differential testing is a comparison-based testing technique used in the SearchSYS ARM-simulator workflow to find mismatches between a real hardware execution and a simulator execution. In the Search+LLM-based Testing for ARM Simulators artifact, the authors describe using differential testing by running fuzzing outputs on real hardware and on a system simulator to identify mismatches. The evaluated simulator target is gem5, with a focus on simulation of the ARM silicon chip Instruction Set Architecture (ISA). [C1]

Role in SearchSYS

In the documented SearchSYS workflow for ARM simulators, test inputs are produced from a combination of LLM-generated C code and fuzzing. SearchSYS generates initial seed C code with a large language model, compiles it, feeds the resulting binary to a fuzzer, and then applies differential testing to compare execution on real ARM hardware with execution in the simulator. [C2]

The artifact reports that SearchSYS combines LLMs, fuzzing, and differential testing to create test cases that activate bugs. In the reported evaluation, the authors state that differential testing identified 624 bugs with LLM-generated test cases and 126 with fuzzed test inputs; they also report that 4 unique bugs were reported and acknowledged by developers. [C3]

Execution pattern in the artifact

The artifact provides scripts for differential testing of input corpus seeds. A single gem5 simulation run can be launched with the ARM gem5 binary and a SearchGEM5 configuration script, passing an input file with --input. A single native-versus-simulation comparison is run with 2-test-input.sh on a selected test input. [C4]

For batch processing, the artifact uses 1-run-diff-test.sh on folders of inputs and redirects output to log files for later inspection. The documented examples include running this script on input folders for CodeBooga, Llama, Magicoder, Phi, TinyLlama, and GPT-3.5-derived corpora. The shortened evaluation runs differential testing on set A and provides commands for LLM-generated and AFL-generated TinyLlama inputs. [C5]

Result interpretation

The artifact explicitly notes that differential-testing logs require manual analysis. Not every failure to simulate a binary is considered a bug: fuzzing may corrupt a binary, and in that case the expected behavior may be that the simulation does not run successfully. The documentation suggests inspecting logs and error strings to triage issues found in ARM native versus simulation runs. [C6]

Environment assumptions

The ARM differential-testing setup is documented for ARM machines. The artifact states that reproducing the evaluation requires an ARM machine with 80 GB of free disk space, and either 72 GB RAM for AFL++ fuzzing or 16 GB RAM when only running differential testing without building gem5 with AFL++ instrumentation. The documented operating systems include Ubuntu and Red Hat-based systems. [C7]

CITATIONS

7 sources
7 citations
[1] Differential testing in the SearchSYS ARM workflow runs fuzzing outputs on real hardware and on a system simulator to identify mismatches, targeting gem5 ARM ISA simulation. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[2] SearchSYS generates LLM seed C code, compiles it, feeds the resulting binary to a fuzzer, and then uses differential testing between real hardware and a simulator. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[3] The artifact reports that SearchSYS combines LLMs, fuzzing, and differential testing, identifying 624 bugs with LLM-generated test cases, 126 with fuzzed test inputs, and 4 unique bugs acknowledged by developers. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[4] A single native-versus-simulation comparison is run with 2-test-input.sh after building or obtaining the ARM gem5 binary. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[5] Batch differential testing is performed with 1-run-diff-test.sh over input folders, with logs used for later manual analysis; the shortened evaluation runs the script on TinyLlama LLM and AFL input sets. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[6] Differential-testing failures require manual analysis because fuzzing may corrupt a binary, so a failure to simulate is not necessarily a simulator bug. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo
[7] The artifact requires an ARM machine with 80 GB disk space and specifies 72 GB RAM for AFL++ fuzzing or 16 GB RAM for differential testing without AFL++-instrumented gem5, with Ubuntu and Red Hat listed as tested systems. Artifact of Search+LLM-based Testing for ARM Simulators - Zenodo

VERSION HISTORY

v3 · 8/12/2026 · gpt-5.5 (current)
v2 · 5/29/2026 · gpt-5.5
v1 · 5/28/2026 · gpt-5.5