dscheck icon indicating copy to clipboard operation
dscheck copied to clipboard

Experimental model checker for testing concurrent algorithms

Results 10 dscheck issues
Sort by recently updated
recently updated
newest added

Many lock-free implementations use some randomness as an easy way to load balance without coordination. This may be a source of nondeterminism and DSCheck does not like it. For example,...

An attempt at improving the test coverage: 1. Randomly generate a little program that do atomic operations 2. Run this program with a random scheduler to sample the possible values...

Lots of real-world programs don't have lock-free property and it's often optimal that way. For one, because we mostly have a somewhat fair OS scheduler, and it does not make...

The core of DSCheck is closely following the design introduced in the [DPOR paper](https://www.cs.columbia.edu/~junfeng/17sp-e6121/papers/dpor.pdf), except for clock vectors, which are missing. This PR adds them. ## Motivation We want to...

(Follow-up on https://github.com/sadiqj/dscheck/pull/2 ) Sorry for the big dirty PR! I was inspired to optimize the backtracking and it now terminates in a few seconds on the examples that I...

I think I'm a bit confused about how to use dscheck. Perhaps other people will be too. The README says: > At the core, dscheck runs each test numerous times,...

When reading a trace, it's not super easy to follow the Atomic operations in the original code... It would help if the `filename:line` of each operation was available (with [`Printexc.get_callstack`](https://v2.ocaml.org/api/Printexc.html#VALget_callstack)...

It's a bit of a pain to adapt existing code to `dscheck` because it doesn't have the standard `Domain.spawn` type (and `Domain.join` is missing). It would be super neat if...

When debugging a failing case produced by `qcheck-lin`, it would be nice if `dscheck` could explore only the interleavings that produce the same intermediate values as reported by `qcheck-lin` (and...

(Builds on https://github.com/sadiqj/dscheck/pull/3 ) I'm not quite convince yet about this tiny change! The scheduler was exhausting the first thread before moving on, so I though it could be interesting...