Published August 2024 | Version v1

Reproduction Image for Article 'Rustlantis: Randomized Differential Testing of the Rust Compiler'

  • 1. ROR icon ETH Zurich
  • 2. ROR icon Imperial College London

Description

Docker image to reproduce evaluations in OOPSLA 2024 paper Rustlantis: Randomized Differential Testing of the Rust Compiler.

Requirements

  • An x86_64 platform with at least 16GB of memory, able to compile Rust and LLVM from source
  • Docker

No network connection is required.

Installation

Run docker import rustlantis-artifact.tar.gz rustlantis-artifact to import the image. Run docker run -it --init rustlantis-artifact /bin/bash to start a shell in the container using the image.

Usage

Table 1

Here is a selection of Rustlantis commit version, seed, and Rust toolchain version originally used to discover bugs listed in Table 1.

Bug # Rustlantis commit Seed Rust toolchain
12 f118398d 1648716 nightly-2023-07-01
13 04dfe128 6234375 nightly-2023-07-01
14 ebdd7f0d 717678 nightly-2023-07-01
17 d1bd718d 257902 nightly-2023-12-01

19

3b0c5a7f 1717541 nightly-2024-02-01

20

f94c480a 1851685 nightly-2023-07-01

22

9329ba5f 3440904 nightly-2024-03-01

To reproduce, run

cd /root/rustlantis
git checkout [Rustlanits commit]
cargo build --release
LLVM_TOOLCHAIN=[Rust toolchain] ./fuzz-one.sh [seed]

The script will print the hash difference, and save a debug version of the program under repros/[seed]-debug.rs

Table 2

To reproduce Table 2, run

cd root
./controlled_experiment.sh
python3 controlled_experiment_stats.py

Figure 10

To reproduce Figure 10, run

cd /root
./measure_coverage.sh
python3 coverage_graph.py

Notes

Apache 2.0 and MIT licenses apply to `/root/rustlantis`, `/root/*.sh`, and `/root/*.py`. Other software contained in this image may have different licenses.

Files

Files (7.4 GB)

Name Size
md5:1823264bb629b1a8a9ba8b1e8b722c77
7.4 GB Download

Additional details

Related works

Cites
Software: 10.1145/3597926.3604919 (DOI)

Software

Repository URL
https://github.com/cbeuw/rustlantis
Programming language
Rust