annotate test/runtime/6888954/vmerrors.sh @ 11092:59b052799158

8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace Summary: Dl_info struct should only be used if dladdr() has returned non-zero (no errors) and always check the dladdr() return value; Dl_info.dli_sname and Dl_info.dli_saddr fields should only be used if non-NULL; update/improve runtime/6888954/vmerrors.sh test Reviewed-by: dsamersoff, zgu, hseigel, coleenp
author dcubed
date Thu, 04 Jul 2013 21:10:17 -0700
parents 5b77884bd4b7
children cc4f5f8d885e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
1 # @test
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
2 # @bug 6888954
11092
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
3 # @bug 8015884
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
4 # @summary exercise HotSpot error handling code
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
5 # @author John Coomes
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
6 # @run shell vmerrors.sh
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
7
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
8 # Repeatedly invoke java with a command-line option that causes HotSpot to
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
9 # produce an error report and terminate just after initialization. Each
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
10 # invocation is identified by a small integer, <n>, which provokes a different
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
11 # error (assertion failure, guarantee failure, fatal error, etc.). The output
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
12 # from stdout/stderr is written to <n>.out and the hs_err_pidXXX.log file is
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
13 # renamed to <n>.log.
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
14 #
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
15 # The automated checking done by this script is minimal. When updating the
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
16 # fatal error handler it is more useful to run it manually or to use the -retain
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
17 # option with the jtreg so that test directories are not removed automatically.
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
18 # To run stand-alone:
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
19 #
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
20 # TESTJAVA=/java/home/dir
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
21 # TESTVMOPTS=...
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
22 # export TESTJAVA TESTVMOPTS
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
23 # sh test/runtime/6888954/vmerrors.sh
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
24
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
25 ulimit -c 0 # no core files
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
26
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
27 i=1
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
28 rc=0
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
29
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
30 assert_re='(assert|guarantee)[(](str|num).*failed: *'
11092
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
31 # for bad_data_ptr_re:
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
32 # EXCEPTION_ACCESS_VIOLATION - Win-*
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
33 # SIGILL - MacOS X
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
34 # SIGSEGV - Linux-*, Solaris SPARC-*, Solaris X86-*
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
35 #
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
36 bad_data_ptr_re='(SIGILL|SIGSEGV|EXCEPTION_ACCESS_VIOLATION).* at pc='
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
37 #
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
38 # for bad_func_ptr_re:
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
39 # EXCEPTION_ACCESS_VIOLATION - Win-*
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
40 # SIGBUS - Solaris SPARC-64
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
41 # SIGSEGV - Linux-*, Solaris SPARC-32, Solaris X86-*
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
42 #
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
43 # Note: would like to use "pc=0x00*0f," in the pattern, but Solaris SPARC-*
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
44 # gets its signal at a PC in test_error_handler().
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
45 #
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
46 bad_func_ptr_re='(SIGBUS|SIGSEGV|EXCEPTION_ACCESS_VIOLATION).* at pc='
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
47 guarantee_re='guarantee[(](str|num).*failed: *'
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
48 fatal_re='fatal error: *'
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
49 tail_1='.*expected null'
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
50 tail_2='.*num='
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
51
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
52 for re in \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
53 "${assert_re}${tail_1}" "${assert_re}${tail_2}" \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
54 "${guarantee_re}${tail_1}" "${guarantee_re}${tail_2}" \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
55 "${fatal_re}${tail_1}" "${fatal_re}${tail_2}" \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
56 "${fatal_re}.*truncated" "ChunkPool::allocate" \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
57 "ShouldNotCall" "ShouldNotReachHere" \
11092
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
58 "Unimplemented" "$bad_data_ptr_re" \
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
59 "$bad_func_ptr_re"
59b052799158 8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
dcubed
parents: 1592
diff changeset
60
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
61 do
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
62 i2=$i
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
63 [ $i -lt 10 ] && i2=0$i
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
64
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
65 "$TESTJAVA/bin/java" $TESTVMOPTS -XX:+IgnoreUnrecognizedVMOptions \
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
66 -XX:ErrorHandlerTest=${i} -version > ${i2}.out 2>&1
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
67
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
68 # If ErrorHandlerTest is ignored (product build), stop.
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
69 #
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
70 # Using the built-in variable $! to get the pid does not work reliably on
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
71 # windows; use a wildcard instead.
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
72 mv hs_err_pid*.log ${i2}.log || exit $rc
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
73
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
74 for f in ${i2}.log ${i2}.out
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
75 do
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
76 egrep -- "$re" $f > $$
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
77 if [ $? -ne 0 ]
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
78 then
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
79 echo "ErrorHandlerTest=$i failed ($f)"
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
80 rc=1
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
81 fi
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
82 done
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
83 rm -f $$
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
84
1592
5b77884bd4b7 6956472: test/runtime/6888954/vmerrors.sh uses ksh-specific syntax
jcoomes
parents: 1490
diff changeset
85 i=`expr $i + 1`
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
86 done
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
87
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents:
diff changeset
88 exit $rc