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
