[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[creduce-bugs] C-Reduce Question: Deterministic Pass



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