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

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
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. (by facebookexperimental)

  • 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

  • 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.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • 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

  • 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
  • FreeBSD 14.0 Delivering Great Performance Uplift

    2 projects | news.ycombinator.com | 27 Nov 2023
  • Git Version Controlled Datasets in S3

    1 project | news.ycombinator.com | 25 Oct 2023
  • Do the work

    1 project | /r/RStudio | 4 Oct 2023