Kill the process with SIGKILL is the first signal did not cause the process to exit
diff --git a/subproc.c b/subproc.c
index 7a8dfa4..df66891 100644
--- a/subproc.c
+++ b/subproc.c
@@ -329,6 +329,15 @@
int64_t curMillis = util_timeNowMillis();
int64_t diffMillis = curMillis - fuzzer->timeStartedMillis;
if (diffMillis > (hfuzz->tmOut * 1000)) {
+ /* Has this instance been already signaled due to timeout? Just, SIGKILL it */
+ if (fuzzer->tmOutSignaled) {
+ LOG_W("PID %d has already been signaled due to timeout. Killing it with SIGKILL",
+ fuzzer->pid);
+ kill(fuzzer->pid, SIGKILL);
+ return;
+ }
+ fuzzer->tmOutSignaled = true;
+
LOG_W("PID %d took too much time (limit %ld s). Killing it", fuzzer->pid, hfuzz->tmOut);
if (hfuzz->tmout_vtalrm) {
kill(fuzzer->pid, SIGVTALRM);