Deterministic Linux for controlled testing and software bug-finding
21–30 of 71 posts
Re: Deterministic Linux for controlled testing and software bug-finding
#22TL;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/repla…
> AMA! Eager to try it but encountering the build error here - https://github.com/facebookexperimental/hermit/issues/11 Do you have a reference build log / environment you can share? Last known good commit sha and/or output from "rustup show"?
Re: Deterministic Linux for controlled testing and software bug-finding
#23Re: Deterministic Linux for controlled testing and software bug-finding
#24Earlier quoted context omitted.
> AMA! Eager to try it but encountering the build error here - https://github.com/facebookexperimental/hermit/issues/11 Do you have a reference build log / environment you can share? Last known good commit sha and/or output from "rustup show"?
We're working on it! Should be fixed soon.
Let's discuss further on that issue #11.
Re: Deterministic Linux for controlled testing and software bug-finding
#25Earlier quoted context omitted.
It’s great how much open source infrastructure software has come out of FAANG in the past decade. Between Kubernetes, react, Kafka, etc it’s wild how much of my tech stack is open source software developed by people at large tech companies. It’s also great PR for the companies.
Heh, I implore you to consider the engineers-eye view. We're tech geeks inside or outside of FAANG, with all the usual incentives. I've been the tech lead on this project for 5 years, through 2 companies, and of course I hope someone finds it useful and chooses to contribute. I'd like to think we could help someone somehow with public relations, but I don't think we can ;-). Actually, I don't think any of the big tec…
Re: Deterministic Linux for controlled testing and software bug-finding
#26Can you explain how making flakey tests, not flakey, helps find bugs. I would have thought these differences are essentially free fuzzing and desirable?
Re: Deterministic Linux for controlled testing and software bug-finding
#27This has been the culmination of several years of work intercepting and sanitizing the Linux system call API. It's now open source.
Re: Deterministic Linux for controlled testing and software bug-finding
#28Neat! This is the direction I’d hoped to see gvisor go in. What’s the reasoning for building from scratch and not piggybacking off gvisor?
Re: Deterministic Linux for controlled testing and software bug-finding
#29Re: Deterministic Linux for controlled testing and software bug-finding
#30Earlier quoted context omitted.
This is exactly the type of thing I've been wanting for testing my chess engine. Parallelism is based on emergent pseudorandom effects of things like interleaving causing searcher threads to mostly end up in non-overlapping parts of the search tree. One question: How do you avoid the program being affected by things like overall system load and memory pressure?
Since CPU is a "compressible" resource, system load doesn't affect the determinism. It'll make it slower of course. Since memory is a non-compressible resource, things can start getting killed by the OOM-killer and there's nothing we can do about it. There are also certainly things like external network communication and file system access that are non-deterministic that must be handled at a higher level (e.g., with…
I'm curious about what happens with time control though. Engines can be given a time constraint and will use various heuristics to allocate that time. How does Hermit intercept gettimeofday()?