"Konstantin" == Konstantin Tokarev <[email protected]> writes:
Konstantin> Sometimes test case reduction makes exit code of predicate
Konstantin> script non-stable, e.g., in my case program begins to crash
Konstantin> with some probability, and reduction advances when it
Konstantin> doesn't crash. In a result I get test case which cannot
Konstantin> pass predicate test at all.
Konstantin>
Konstantin> I think it may be useful to introduce "stability check"
Konstantin> pass which runs predicate over non-modified input, and if
Konstantin> it fails, stops process with error message. It could be run
Konstantin> e.g. each time new pass is going to be started.
Konstantin>
Konstantin> Does it sound reasonable?
I think that maybe I don't understand your question.
When you say that your program "begins to crash with some probability", do you
mean that (1) some of the programs produced by C-Reduce crash when they are
run, or that (2) the behavior of some particular program is nondeterministic?
If you mean (1), then that is probably to be expected. It is not surprising
that some programs produced by C-Reduce would crash when they are run. Your
predicate script would need to check for this and handle these cases.
If you mean (2), then that will make reduction with C-Reduce very difficult!
C-Reduce assumes that the predicate script can accurately decide if a
particular program is good/interesting or bad/uninteresting.
Your second paragraph: Are you suggesting the C-Reduce should test the original
program (the "non-modified input") multiple times?
I'm not sure that's a good idea. As I wrote already, C-Reduce assumes that the
predicate script that you give to it will be accurate and deterministic. If
the program that it is testing is nondeterministic, it is the job of the
predicate script to figure that out and return an appropriate, deterministic
good/bad decision to the rest of C-Reduce.
(How would a script decide if the variant under test is nondeterministic?
That's a hard problem, and I don't mean to give an answer to that question
here! All I mean to say here is that, in the design of C-Reduce, it is the
predicate script's job to decide if a variant is "good" or "bad.")
But maybe I'm not understanding your questions?
Thanks ---
Eric.
--
-------------------------------------------------------------------------------
Eric Eide <[email protected]> . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX