printf "\nPulling ASan logs...\n"
log_dir="${TARGET_DIR}/logs"
logs=($(sdb_shell_verbose find "${log_dir}" -name "fuzz-*.log" | sort | tr "\n\r" " "))
-crashes_num=0
+errors_num=0
printf_err "\nFound ${#logs[@]} logs:\n"
for i in "${!logs[@]}"; do
${SDB_CMD} pull "${crash_input}" "${run_dir}" >/dev/null
done
- if [[ "${#crash_inputs[@]}" -gt 0 ]]; then
- (( ++crashes_num ))
+ # get UBSan errors
+ ubsan_errors=($(grep "runtime error" "${run_dir}/${symbolized}" || :))
+
+ if (( ${#crash_inputs[@]} + ${#ubsan_errors[@]} > 0 )); then
+ (( errors_num += ${#crash_inputs[@]} + ${#ubsan_errors[@]} ))
printf_err " [CRASH]"
fi
printf_err "\n"
done
-printf_err "Result: ${crashes_num} crashes in ${#logs[@]} runs.\n"
+printf_err "Result: ${errors_num} errors in ${#logs[@]} runs.\n"
if (( COVERAGE == 1 )); then
printf "\nCollecting coverage...\n"
function generate_reports() {
for worker in "${@}"; do
local job="${JOBS_BY_WORKERS[${worker}]}"
+ local errors
+ local report
echo "* Generating report for job on ${worker}: ${job} ..."
echo "" | "${COMMANDS_DIR}"/run.sh --serial "${worker}" --dump-coverage ${job} >/dev/null
report=$( { echo "" | "${COMMANDS_DIR}"/report.sh --serial "${worker}" --install-deps --coverage ${job} >/dev/null; } 2>&1 )
- crashes=$(echo "${report}" | sed -En 's/^Result: ([0-9]+) crashes in [0-9]+ runs.$/\1/p')
+ errors=$(echo "${report}" | sed -En 's/^Result: ([0-9]+) errors in [0-9]+ runs.$/\1/p')
echo "${report}"
echo
unset PIDS_BY_WORKERS["${worker}"]
unset JOBS_BY_WORKERS["${worker}"]
- if (( crashes == 0 )); then
+ if (( errors == 0 )); then
PENDING+=("${job}")
fi
done