Hi C-Reduce group!

This is a greeting from Xueyan from the University of Waterloo.

I bumped into a question that I cannot answer myself after reviewing the 
C-Reduce source code.
Could you kindly drop a hint?

My question is about the determinism of C-Reduce.
In `delta_pass()` function, variant programs are tested in parallel.
How does C-Reduce ensure the deterministic result?
I noticed `wait_helper()` waits for any of finished child process 
(https://github.com/csmith-project/creduce/blob/master/creduce/creduce.in#L677).
What if two processes both have interesting variants?
For example, variants [p4, p5, p6, p7] are tested in parallel. `p4` and `p5` 
are interesting. There is a race condition.
Then, give an input to a pass, the result is no longer deterministic.

I read Dr Regehr’s blog on Parallelizing Delta Debugging 
(https://blog.regehr.org/archives/749). I am not sure if the assumption that no 
transformed input is interesting has anything to do with the determinism. Most 
likely there is only one interesting variant in a batch (if any), but it is 
still possible that a batch has two variants are interesting.

Appreciate your time and help in advance!
Look forward to your reply.

Cheers,
Xueyan Zhang
University of Waterloo




Reply via email to