Deterministic Linux for Controlled Testing and Software Bug-Finding

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • hermit

    Hermit launches linux x86_64 programs in a special, hermetically isolated sandbox to control their execution. Hermit translates normal, nondeterministic behavior, into deterministic, repeatable behavior. This can be used for various applications, including replay-debugging, reproducible artifacts, chaos mode concurrency testing and bug analysis.

    TL;DR: This is a Rust project that forces deterministic execution of arbitrary programs and acts like a reproducible container. That is, it hermetically isolates the program from sources of non-determinism such as time, thread interleavings, random number generation, etc. Guaranteed determinism is a powerful tool and it serves as a basis for a number of applications, including concurrency stress testing, record/replay, reproducible builds, automatic diagnosis of concurrency bugs, and more.

    I've been on the team working on this project over the past ~2 years. AMA!

    Here is the GitHub repository: https://github.com/facebookexperimental/hermit

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • dettrace

    A determinizing tracer using Ptrace

    Note that this is a follow-on project from the earlier Dettrace system, which was applied mainly to reproducible builds (as in the academic paper, https://dl.acm.org/doi/10.1145/3373376.3378519, and presented to the Debian Reproducible Builds summit):

    - https://github.com/dettrace/dettrace

    And one cool part of it is this Rust program instrumentation layer:

    - https://github.com/facebookexperimental/reverie

    It's good for building OS-emulator style projects or tracing tools.

  • reverie

    An ergonomic and safe syscall interception framework for Linux. (by facebookexperimental)

    Note that this is a follow-on project from the earlier Dettrace system, which was applied mainly to reproducible builds (as in the academic paper, https://dl.acm.org/doi/10.1145/3373376.3378519, and presented to the Debian Reproducible Builds summit):

    - https://github.com/dettrace/dettrace

    And one cool part of it is this Rust program instrumentation layer:

    - https://github.com/facebookexperimental/reverie

    It's good for building OS-emulator style projects or tracing tools.

  • sapling

    A Scalable, User-Friendly Source Control System.

    Yeah, it's interesting to think about persisting the state we would need to make the file system more sympatico with Hermit. If we were willing to have a daemon.... Meta develops this "watchman" tool that our build infrastructure uses. I think for existing file systems we could imagine a daemon that watches the directory and caches what we need.

    But if we could dream of new file systems, then I want one that is basically btrfs but with O(1) file-level parallel-hashes (rather than block level). Heck maybe it could even enforce a sorted order on directories for us too. The hashes would be very useful in record-and-replay scenarios, where you could know immediately whether the input files are in your content-addressible blob storage without having to hash them every time.

    (We have some hash support in Meta's EdenFS FUSE file system https://github.com/facebook/sapling)

    P.S. about Reproducible Builds -- we pitched this to the community in 2019 (at the Reproducible Builds Summit) and with that ASPLOS'20 paper, but we would be eager to see anyone wanting to pick it up and take it further.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • PRoot: User-space implementation of chroot, mount –bind, and binfmt_misc

    5 projects | news.ycombinator.com | 27 Nov 2024
  • GitOps ML Experiments, data versioning, model registry

    1 project | news.ycombinator.com | 31 Aug 2024
  • Show HN: BuildSafe – Build 0 CVE base images with ease

    1 project | news.ycombinator.com | 23 Aug 2024
  • Two debian distros, both Termux-X11 and VNC gives black screen on one, workd on the other

    2 projects | /r/termux | 10 Dec 2023
  • Issue with channels and memory

    1 project | /r/rust | 7 Dec 2023

Did you konow that Rust is
the 5th most popular programming language
based on number of metions?