Add support for UBSan to 'report' command 70/157470/4
authorDmitriy Nikiforov <d.nikiforov@samsung.com>
Tue, 24 Oct 2017 14:07:38 +0000 (17:07 +0300)
committerDmitriy Nikiforov <d.nikiforov@samsung.com>
Fri, 27 Oct 2017 16:20:47 +0000 (16:20 +0000)
Change-Id: I03f9bb2e79749d429ac2968698bc931b3df1aea0

infra/commands/report.sh
infra/commands/run-all.sh

index de7e60b..17e610c 100755 (executable)
@@ -87,7 +87,7 @@ rm -rf "${DEST_DIR}" || true
 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
@@ -111,14 +111,17 @@ 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"
index 4954034..b1a4df3 100755 (executable)
@@ -91,11 +91,13 @@ function get_finished_workers() {
 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
@@ -104,7 +106,7 @@ function generate_reports() {
         unset PIDS_BY_WORKERS["${worker}"]
         unset JOBS_BY_WORKERS["${worker}"]
 
-        if (( crashes == 0 )); then
+        if (( errors == 0 )); then
             PENDING+=("${job}")
         fi
     done