fi
fi
+ RUNNER_PIDS=
+ RUNNER_ERR_FILES=
for ARGS in "${RUNNER_ARGS[@]}" ; do
if [ $DONE -eq 1 ]; then
break # We caught a signal
(
ulimit -S -t $MAX_CPU_TIME -s $MAX_STACK
ulimit -c unlimited
+ SUBSHELL_PID=$($SHELL -c 'echo $PPID')
# Don't enable ulimit -v when using ASAN. See
# https://github.com/google/sanitizers/wiki/AddressSanitizer#ulimit--v
fi
"$RUNNER" $COMMON_ARGS $ARGS $TMP_DIR/$TMP_FILE \
- > /dev/null 2>> $TMP_DIR/$ERR_FILE
- )
+ > /dev/null 2>> $TMP_DIR/$ERR_FILE.$SUBSHELL_PID
+ ) &
+ RUNNER_PID=$!
+ RUNNER_PIDS="$RUNNER_PIDS $RUNNER_PID"
+ RUNNER_ERR_FILES="$RUNNER_ERR_FILES $TMP_DIR/$ERR_FILE.$RUNNER_PID"
+ done
+
+ for RUNNER_PID in $RUNNER_PIDS ; do
+ wait $RUNNER_PID
RETVAL=$?
+ mv $TMP_DIR/$ERR_FILE.$RUNNER_PID $TMP_DIR/$ERR_FILE
# Uncomment the next two lines to enable dissector bug
# checking.
fi
if [ $DONE -ne 1 -a \( $RETVAL -ne 0 -o $DISSECTOR_BUG -ne 0 -o $VG_ERR_CNT -ne 0 \) ] ; then
+ rm -f $RUNNER_ERR_FILES
ws_exit_error
fi
done
g_string_free(comp_info_str, TRUE);
g_string_free(runtime_info_str, TRUE);
+ /* Fail sometimes. Useful for testing fuzz scripts. */
+ /* if (g_random_int_range(0, 100) < 5) abort(); */
+
/*
* In order to have the -X opts assigned before the wslua machine starts
* we need to call getopt_long before epan_init() gets called.