diff --git a/src/include/deepstate/DeepState.h b/src/include/deepstate/DeepState.h index 03b0438..51c3cee 100644 --- a/src/include/deepstate/DeepState.h +++ b/src/include/deepstate/DeepState.h @@ -578,16 +578,20 @@ static int DeepState_RunTestNoFork(struct DeepState_TestInfo *test) { /* Fork and run `test`. */ static enum DeepState_TestRunResult DeepState_ForkAndRunTest(struct DeepState_TestInfo *test) { - if (FLAG_no_fork) { - return DeepState_RunTestNoFork(test); - } - pid_t test_pid = fork(); - if (!test_pid) { - DeepState_RunTest(test); + pid_t test_pid; + if (!FLAGS_no_fork) { + test_pid = fork(); + if (!test_pid) { + DeepState_RunTest(test); + } } int wstatus; - waitpid(test_pid, &wstatus, 0); - + if (!FLAGS_no_fork) { + waitpid(test_pid, &wstatus, 0); + } else { + wstatus = DeepState_RunTestNoFork(test); + } + /* If we exited normally, the status code tells us if the test passed. */ if (WIFEXITED(wstatus)) { uint8_t status = WEXITSTATUS(wstatus); diff --git a/src/lib/DeepState.c b/src/lib/DeepState.c index 1e162ad..cfd1657 100644 --- a/src/lib/DeepState.c +++ b/src/lib/DeepState.c @@ -39,7 +39,7 @@ DEFINE_bool(abort_on_fail, false, "Abort on file replay failure (useful in file DEFINE_bool(verbose_reads, false, "Report on bytes being read during execution of test."); DEFINE_bool(fuzz, false, "Perform brute force unguided fuzzing."); DEFINE_bool(fuzz_save_passing, false, "Save passing tests during fuzzing."); -DEFINE_bool(no_fork, false, "Don't fork when running a test.") +DEFINE_bool(no_fork, false, "Don't fork when running a test."); DEFINE_int(log_level, 0, "Minimum level of logging to output."); DEFINE_int(seed, 0, "Seed for brute force fuzzing (uses time if not set).");