aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2023-08-23 15:36:08 +0000
committerGitHub <noreply@github.com>2023-08-23 15:36:08 +0000
commit6ae779bc7324f084bfee1e97dbc7b9aa4911af08 (patch)
tree2795024b2c118d053637aa1cca8f7e583615b9cd
parentb397bdc3d976921a9b936f21273adc3a1bf9d4f4 (diff)
parent19d0c6a4c5015368ff610418994b2dc8f3f66117 (diff)
downloadafl++-6ae779bc7324f084bfee1e97dbc7b9aa4911af08.tar.gz
Merge pull request #1842 from AFLplusplus/dev
afl-whatsup startup detection
-rwxr-xr-xafl-whatsup63
-rw-r--r--docs/Changelog.md1
2 files changed, 56 insertions, 8 deletions
diff --git a/afl-whatsup b/afl-whatsup
index bbb73e47..ebd1ce61 100755
--- a/afl-whatsup
+++ b/afl-whatsup
@@ -100,6 +100,7 @@ if [ -d queue ]; then
fi
BC=`which bc 2>/dev/null`
+FUSER=`which fuser 2>/dev/null`
if [ -z "$NO_COLOR" ]; then
RED=`tput setaf 9 1 1 2>/dev/null`
@@ -116,6 +117,7 @@ TMP=`mktemp -t .afl-whatsup-XXXXXXXX` || TMP=`mktemp -p /data/local/tmp .afl-wha
ALIVE_CNT=0
DEAD_CNT=0
+START_CNT=0
TOTAL_TIME=0
TOTAL_EXECS=0
@@ -177,6 +179,7 @@ for i in `find . -maxdepth 2 -iname fuzzer_stats | sort`; do
sed 's/^command_line.*$/_skip:1/;s/[ ]*:[ ]*/="/;s/$/"/' "$i" >"$TMP"
. "$TMP"
DIR=$(dirname "$i")
+ DIRECTORY=$DIR
DIR=${DIR##*/}
RUN_UNIX=$run_time
RUN_DAYS=$((RUN_UNIX / 60 / 60 / 24))
@@ -204,19 +207,59 @@ for i in `find . -maxdepth 2 -iname fuzzer_stats | sort`; do
if ! kill -0 "$fuzzer_pid" 2>/dev/null; then
- if [ "$SUMMARY_ONLY" = "" ]; then
+ IS_STARTING=
+ IS_DEAD=
- echo " Instance is dead or running remotely, skipping."
- echo
+ if [ -e "$i" ] && [ -e "$DIRECTORY/fuzzer_setup" ] && [ -n "$FUSER" ]; then
+
+ if [ "$i" -ot "$DIRECTORY/fuzzer_setup" ]; then
+
+ # fuzzer_setup is newer than fuzzer_stats, maybe the instance is starting?
+ TMP_PID=`fuser -v "$DIRECTORY" 2>&1 | grep afl-fuzz`
+
+ if [ -n "$TMP_PID" ]; then
+
+ if [ "$SUMMARY_ONLY" = "" ]; then
+
+ echo " Instance is still starting up, skipping."
+ echo
+
+ fi
+
+ START_CNT=$((START_CNT + 1))
+ last_find=0
+ IS_STARTING=1
+
+ if [ "$PROCESS_DEAD" = "" ]; then
+
+ continue
+
+ fi
+
+ fi
+
+ fi
fi
- DEAD_CNT=$((DEAD_CNT + 1))
- last_find=0
+ if [ -z "$IS_STARTING" ]; then
+
+ if [ "$SUMMARY_ONLY" = "" ]; then
+
+ echo " Instance is dead or running remotely, skipping."
+ echo
+
+ fi
- if [ "$PROCESS_DEAD" = "" ]; then
+ DEAD_CNT=$((DEAD_CNT + 1))
+ IS_DEAD=1
+ last_find=0
- continue
+ if [ "$PROCESS_DEAD" = "" ]; then
+
+ continue
+
+ fi
fi
@@ -326,7 +369,7 @@ if [ "$PROCESS_DEAD" = "" ]; then
else
TXT="included in stats"
- ALIVE_CNT=$(($ALIVE_CNT - $DEAD_CNT))
+ ALIVE_CNT=$(($ALIVE_CNT - $DEAD_CNT - $START_CNT))
fi
@@ -338,6 +381,10 @@ fi
echo " Fuzzers alive : $ALIVE_CNT"
+if [ ! "$START_CNT" = "0" ]; then
+ echo " Starting up : $START_CNT ($TXT)"
+fi
+
if [ ! "$DEAD_CNT" = "0" ]; then
echo " Dead or remote : $DEAD_CNT ($TXT)"
fi
diff --git a/docs/Changelog.md b/docs/Changelog.md
index fa9099c0..961b2940 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -8,6 +8,7 @@
- added `AFL_FINAL_SYNC` which forces a final fuzzer sync (also for `-F`)
before terminating.
- afl-whatsup:
+ - detect instanced that are starting up and show them as such as not dead
- now also shows coverage reached
- option -m shows only very relevant stats
- option -n will not use color in the output