● Zion Boggan
repos/Cyclops V2/targets/deep_loop.sh
zionboggan.com ↗
33 lines · bash
History for this file →
1
W=/opt/cyclops-v2/oracle/work/llamacpp
2
BIN="$W/fuzz_deep"
3
CORP="$W/corpus2"
4
CRASH="$W/deep/crashes"
5
SIGS="$W/deep/sigs.txt"
6
LOG="$W/deep/loop.log"
7
mkdir -p "$CORP" "$CRASH"; touch "$SIGS"
8
cp "$W/seeds/"* "$CORP/" 2>/dev/null || true
9
DEADLINE=$(( $(date +%s) + 21600 ))
10
 
11
echo "deep_loop start $(date)" > "$LOG"
12
i=0
13
while [ "$(date +%s)" -lt "$DEADLINE" ]; do
14
  i=$((i+1))
15
  ASAN_OPTIONS=detect_leaks=0:abort_on_error=0:exitcode=77 \
16
    timeout 660 "$BIN" -max_total_time=600 -rss_limit_mb=4096 -timeout=30 \
17
    -artifact_prefix="$W/deep/crash-" "$CORP" >> "$LOG" 2>&1
18
  for c in "$W"/deep/crash-*; do
19
    [ -f "$c" ] || continue
20
    out=$(ASAN_OPTIONS=detect_leaks=0:abort_on_error=0:exitcode=88 timeout 30 "$BIN" "$c" 2>&1)
21
    sig=$(echo "$out" | grep -oE "heap-buffer-overflow|stack-buffer-overflow|global-buffer-overflow|heap-use-after-free|double-free|stack-overflow|division by zero|FPE|out-of-memory|GGML_ASSERT|GGML_ABORT|SEGV on unknown" | head -1)
22
    loc=$(echo "$out" | grep -oE "gguf\.cpp:[0-9]+|ggml[-a-z]*\.c:[0-9]+|ggml\.c:[0-9]+" | head -1)
23
    key="${sig:-unknown}@${loc:-?}"
24
    if grep -qxF "$key" "$SIGS"; then
25
      rm -f "$c"
26
    else
27
      echo "$key" >> "$SIGS"
28
      mv "$c" "$CRASH/$(echo "$key" | tr '/: ' '___')_$(basename "$c")"
29
      echo "NEWCRASH $key $(date)" >> "$LOG"
30
    fi
31
  done
32
done
33
echo "deep_loop done $(date)" >> "$LOG"