annotate test/compiler/6865265/StackOverflowBug.java @ 6972:bd7a7ce2e264

6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 12 Nov 2012 14:03:53 -0800
parents 71699e9d8673
children 7cc69864a29b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3998
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
1 /*
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
4 *
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
7 * published by the Free Software Foundation.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
8 *
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
13 * accompanied this code).
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
14 *
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
18 *
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
21 * questions.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
22 *
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
23 */
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
24
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
25 /**
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
26 * @test
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
27 * @bug 6865265
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
28 * @summary JVM crashes with "missing exception handler" error
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
29 * @author volker.simonis@sap.com
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
30 *
4054
71699e9d8673 7106907: 64 bit VM fails test compiler/6865265/StackOverflowBug.java
kvn
parents: 3998
diff changeset
31 * @run main/othervm -XX:CompileThreshold=100 -Xbatch -Xss224k StackOverflowBug
3998
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
32 */
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
33
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
34
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
35 public class StackOverflowBug {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
36
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
37 public static int run() {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
38 try {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
39 try {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
40 return run();
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
41 } catch (Throwable e) {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
42 // Notice that the class 'Throwable' is NOT resolved by the verifier,
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
43 // because the verifier only checks if 'Throwable' is assignable to
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
44 // 'java.lang.Throwable' and this check succeeds immediately if the two
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
45 // types have equal names (see 'VerificationType::is_assignable_from' which
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
46 // is called from 'ClassVerifier::verify_exception_handler_table').
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
47 // This is strange, because if the two classes have different names,
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
48 // 'is_assignable_from()' calls 'is_reference_assignable_from()' which resolves
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
49 // both classes by calling 'SystemDictionary::resolve_or_fail()'. This call
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
50 // also takes into account the current class loader (i.e. the one which was used
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
51 // to load this class) and would place a corresponding
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
52 // "java.lang.Throwable / current-Classloader" entry into the system dictionary.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
53 // This would in turn allow C2 to see 'java.lang.Throwable' as "loaded"
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
54 // (see 'Parse::catch_inline_exceptions()') when this method is compiled.
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
55 return 42;
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
56 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
57 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
58 finally {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
59 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
60 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
61
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
62 public static void main(String argv[]) {
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
63 run();
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
64 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
65 }
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
66
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
67 /*
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
68 public static int run();
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
69 Code:
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
70 0: invokestatic #2 // Method run:()I
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
71 3: istore_0
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
72 4: iload_0
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
73 5: ireturn
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
74 6: astore_0
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
75 7: bipush 42
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
76 9: istore_1
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
77 10: iload_1
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
78 11: ireturn
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
79 12: astore_2
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
80 13: aload_2
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
81 14: athrow
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
82 Exception table:
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
83 from to target type
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
84 0 4 6 Class java/lang/Throwable
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
85 0 4 12 any
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
86 6 10 12 any
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
87 12 13 12 any
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
88
ec5ce9326985 6865265: JVM crashes with "missing exception handler" error
kvn
parents:
diff changeset
89 */