forked from osmocom/wireshark
Add a -a flag to specify running under ASan, and don't set ulimit -v if so.
You can't run ASan-built programs with a ulimit, as ASan allocates a huge amount of shadow memory. Change-Id: Ic4d3c2fae77719f65d4594774bc8aa92d2a3a035 Ping-Bug: 12797 Reviewed-on: https://code.wireshark.org/review/17645 Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
9360f41959
commit
11d3a0f963
|
@ -9,13 +9,17 @@
|
||||||
TEST_TYPE="randpkt"
|
TEST_TYPE="randpkt"
|
||||||
. `dirname $0`/test-common.sh || exit 1
|
. `dirname $0`/test-common.sh || exit 1
|
||||||
|
|
||||||
|
# Run under AddressSanitizer ?
|
||||||
|
ASAN=0
|
||||||
|
|
||||||
# Trigger an abort if a dissector finds a bug.
|
# Trigger an abort if a dissector finds a bug.
|
||||||
# Uncomment to disable
|
# Uncomment to disable
|
||||||
WIRESHARK_ABORT_ON_DISSECTOR_BUG="True"
|
WIRESHARK_ABORT_ON_DISSECTOR_BUG="True"
|
||||||
|
|
||||||
# To do: add options for file names and limits
|
# To do: add options for file names and limits
|
||||||
while getopts ":b:d:p:t:" OPTCHAR ; do
|
while getopts "a:b:d:p:t:" OPTCHAR ; do
|
||||||
case $OPTCHAR in
|
case $OPTCHAR in
|
||||||
|
a) ASAN=1 ;;
|
||||||
b) WIRESHARK_BIN_DIR=$OPTARG ;;
|
b) WIRESHARK_BIN_DIR=$OPTARG ;;
|
||||||
d) TMP_DIR=$OPTARG ;;
|
d) TMP_DIR=$OPTARG ;;
|
||||||
p) MAX_PASSES=$OPTARG ;;
|
p) MAX_PASSES=$OPTARG ;;
|
||||||
|
@ -39,6 +43,13 @@ ws_check_exec "$TSHARK" "$RANDPKT" "$DATE" "$TMP_DIR"
|
||||||
declare -a TSHARK_ARGS=("-nVxr" "-nr")
|
declare -a TSHARK_ARGS=("-nVxr" "-nr")
|
||||||
RANDPKT_ARGS="-b 2000 -c 5000"
|
RANDPKT_ARGS="-b 2000 -c 5000"
|
||||||
|
|
||||||
|
if [ $ASAN -ne 0 ]; then
|
||||||
|
echo -n "ASan enabled. Virtual memory limit is "
|
||||||
|
ulimit -v
|
||||||
|
else
|
||||||
|
echo "ASan disabled. Virtual memory limit is $MAX_VMEM"
|
||||||
|
fi
|
||||||
|
|
||||||
HOWMANY="forever"
|
HOWMANY="forever"
|
||||||
if [ $MAX_PASSES -gt 0 ]; then
|
if [ $MAX_PASSES -gt 0 ]; then
|
||||||
HOWMANY="$MAX_PASSES passes"
|
HOWMANY="$MAX_PASSES passes"
|
||||||
|
@ -77,8 +88,15 @@ while [ $PASS -lt $MAX_PASSES -o $MAX_PASSES -lt 1 ] ; do
|
||||||
# longer then MAX_CPU_TIME seconds. (ulimit may not be supported
|
# longer then MAX_CPU_TIME seconds. (ulimit may not be supported
|
||||||
# well on some platforms, particularly cygwin.)
|
# well on some platforms, particularly cygwin.)
|
||||||
(
|
(
|
||||||
ulimit -S -t $MAX_CPU_TIME -v $MAX_VMEM -s $MAX_STACK
|
ulimit -S -t $MAX_CPU_TIME -s $MAX_STACK
|
||||||
ulimit -c unlimited
|
ulimit -c unlimited
|
||||||
|
|
||||||
|
# Don't enable ulimit -v when using ASAN. See
|
||||||
|
# https://github.com/google/sanitizers/wiki/AddressSanitizer#ulimit--v
|
||||||
|
if [ $ASAN -eq 0 ]; then
|
||||||
|
ulimit -v $MAX_VMEM
|
||||||
|
fi
|
||||||
|
|
||||||
"$TSHARK" $ARGS $TMP_DIR/$TMP_FILE \
|
"$TSHARK" $ARGS $TMP_DIR/$TMP_FILE \
|
||||||
> /dev/null 2>> $TMP_DIR/$ERR_FILE
|
> /dev/null 2>> $TMP_DIR/$ERR_FILE
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue