Mercurial > hg > truffle
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 |
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 */ |