hotspot/test/runtime/6888954/vmerrors.sh
author jcoomes
Thu, 22 Apr 2010 13:23:15 -0700
changeset 5403 6b0dd9c75dde
child 5715 fe333439d5c6
permissions -rw-r--r--
6888954: argument formatting for assert() and friends Reviewed-by: kvn, twisti, apetrusenko, never, dcubed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     1
# @test
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     2
# @bug 6888954
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     3
# @summary exercise HotSpot error handling code
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     4
# @author John Coomes
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     5
# @run shell vmerrors.sh
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     6
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     7
# Repeatedly invoke java with a command-line option that causes HotSpot to
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     8
# produce an error report and terminate just after initialization.  Each
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
     9
# invocation is identified by a small integer, <n>, which provokes a different
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    10
# error (assertion failure, guarantee failure, fatal error, etc.).  The output
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    11
# from stdout/stderr is written to <n>.out and the hs_err_pidXXX.log file is
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    12
# renamed to <n>.log.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    13
#
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    14
# The automated checking done by this script is minimal.  When updating the
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    15
# fatal error handler it is more useful to run it manually or to use the -retain
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    16
# option with the jtreg so that test directories are not removed automatically.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    17
# To run stand-alone:
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    18
#
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    19
# TESTJAVA=/java/home/dir
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    20
# TESTVMOPTS=...
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    21
# export TESTJAVA TESTVMOPTS
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    22
# sh test/runtime/6888954/vmerrors.sh
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    23
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    24
ulimit -c 0 # no core files
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    25
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    26
i=1
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    27
rc=0
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    28
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    29
assert_re='(assert|guarantee)[(](str|num).*failed: *'
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    30
guarantee_re='guarantee[(](str|num).*failed: *'
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    31
fatal_re='fatal error: *'
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    32
signal_re='(SIGSEGV|EXCEPTION_ACCESS_VIOLATION).* at pc='
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    33
tail_1='.*expected null'
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    34
tail_2='.*num='
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    35
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    36
for re in                                                 \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    37
    "${assert_re}${tail_1}"    "${assert_re}${tail_2}"    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    38
    "${guarantee_re}${tail_1}" "${guarantee_re}${tail_2}" \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    39
    "${fatal_re}${tail_1}"     "${fatal_re}${tail_2}"     \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    40
    "${fatal_re}.*truncated"   "ChunkPool::allocate"      \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    41
    "ShouldNotCall"            "ShouldNotReachHere"       \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    42
    "Unimplemented"            "$signal_re"
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    43
    
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    44
do
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    45
    i2=$i
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    46
    [ $i -lt 10 ] && i2=0$i
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    47
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    48
    "$TESTJAVA/bin/java" $TESTVMOPTS -XX:+IgnoreUnrecognizedVMOptions \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    49
        -XX:ErrorHandlerTest=${i} -version > ${i2}.out 2>&1
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    50
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    51
    # If ErrorHandlerTest is ignored (product build), stop.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    52
    #
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    53
    # Using the built-in variable $! to get the pid does not work reliably on
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    54
    # windows; use a wildcard instead.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    55
    mv hs_err_pid*.log ${i2}.log || exit $rc
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    56
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    57
    for f in ${i2}.log ${i2}.out
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    58
    do
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    59
        egrep -- "$re" $f > $$
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    60
        if [ $? -ne 0 ]
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    61
        then
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    62
            echo "ErrorHandlerTest=$i failed ($f)"
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    63
            rc=1
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    64
        fi
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    65
    done
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    66
    rm -f $$
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    67
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    68
    i=$(expr $i + 1)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    69
done
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    70
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
    71
exit $rc