segfault with 8u5
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Sep 11 22:20:09 UTC 2014
Hi, Martin
Unfortunately I did not see such failure before. Our bugs database shows
nothing too.
Did you get next message in output before the crash?
"*** Exception not InstPtr"
It could happen if it is dead part of the IR graph.
Can you add next debug output code to Hotspot's doCall.cpp (patch
attached) and test with it?
I may need to ask you do more such testing if it is fine with you.
Regards,
Vladimir
On 9/11/14 2:05 PM, Martin Traverso wrote:
> Hi Vladimir,
>
> I finally got around to building a fastdebug VM. I don't see the first
> crash anymore (great!), but the second one still happens. Here's the output:
>
> https://gist.github.com/martint/abea9be3df700236ec0b
>
> Let me know if there's anything other information you'd like me to gather.
>
> Thanks!
> Martin
>
> On Wed, Jul 30, 2014 at 10:29 AM, Vladimir Kozlov
> <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>
> Martin,
>
> It would be also nice if you can build fastdebug VM and run with it.
> cd hotspot/make; make fastdebug LP64=1
>
> Thanks,
> Vladimir
>
>
> On 7/30/14 9:40 AM, Vladimir Kozlov wrote:
>
> 8029381 was fixed in jdk9 and 8u20 (which should be release soon):
>
> http://hg.openjdk.java.net/__jdk8u/jdk8u/hotspot/rev/__0b9500028980
> <http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/0b9500028980>
>
> I will look on C2 crash more. I don't remember any recent
> problems in
> catch_inline_exceptions().
>
> Regards,
> Vladimir
>
> On 5/19/14 12:24 PM, Martin Traverso wrote:
>
> The failure happened in C1 JIT compiler (first tier).
> You can try
> to switch off -XX:-TieredCompilation.
>
>
> That seemed to have worked around this particular issue.
>
> However, we ran into another crash:
>
> Stack: [0x00000000430c8000,__0x00000000431c9000],
> sp=0x00000000431c5980,
> free space=1014k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
> C=native code)
>
> V [libjvm.so+0x814115] LoadKlassNode::make(PhaseGVN&, Node*,
> Node*,
> TypePtr const*, TypeKlassPtr const*)+0x45
> V [libjvm.so+0x51ab06]
> Parse::catch_inline___exceptions(SafePointNode*)+__0x936
>
> V [libjvm.so+0x8c1a5a] Parse::do_exceptions()+0xba
> V [libjvm.so+0x8c6100] Parse::do_one_block()+0x180
> V [libjvm.so+0x8c6377] Parse::do_all_blocks()+0x127
> V [libjvm.so+0x8c95d3] Parse::Parse(JVMState*, ciMethod*, float,
> Parse*)+0x15a3
> V [libjvm.so+0x3b6529] ParseGenerator::generate(__JVMState*,
> Parse*)+0x99
> V [libjvm.so+0x3b7202]
> PredictedCallGenerator::__generate(JVMState*,
> Parse*)+0x2a2
> V [libjvm.so+0x51aefd] Parse::do_call()+0x1cd
> V [libjvm.so+0x8d3c7a] Parse::do_one_bytecode()+__0x32da
> V [libjvm.so+0x8c60f8] Parse::do_one_block()+0x178
>
> V [libjvm.so+0x8c6377] Parse::do_all_blocks()+0x127
> V [libjvm.so+0x8c95d3] Parse::Parse(JVMState*, ciMethod*, float,
> Parse*)+0x15a3
>
> V [libjvm.so+0x3b6529] ParseGenerator::generate(__JVMState*,
> Parse*)+0x99
> V [libjvm.so+0x46111c] Compile::Compile(ciEnv*, C2Compiler*,
> ciMethod*, int, bool, bool, bool)+0x128c
>
> V [libjvm.so+0x3b5008] C2Compiler::compile_method(__ciEnv*,
> ciMethod*,
> int)+0x198
> V [libjvm.so+0x46982a]
> CompileBroker::invoke___compiler_on_method(__CompileTask*)+0xc8a
>
> V [libjvm.so+0x46c230]
> CompileBroker::compiler___thread_loop()+0x620
> V [libjvm.so+0x9e303f] JavaThread::thread_main_inner(__)+0xdf
>
> V [libjvm.so+0x9e3205] JavaThread::run()+0x1b5
> V [libjvm.so+0x8a00c8] java_start(Thread*)+0x108
>
>
>
> Full dump here:
> https://gist.github.com/__martint/783cf3e30c17fc897423
> <https://gist.github.com/martint/783cf3e30c17fc897423>
>
>
> The only bug I found which could be related is next:
>
> https://bugs.openjdk.java.net/____browse/JDK-8029381
> <https://bugs.openjdk.java.net/__browse/JDK-8029381>
> <https://bugs.openjdk.java.__net/browse/JDK-8029381
> <https://bugs.openjdk.java.net/browse/JDK-8029381>>
>
>
> Unfortunately, I can't see this bug report. I get redirected
> to the
> login screen.
>
>
> Thanks!
> Martin
>
>
-------------- next part --------------
diff -r fe1f65b0a2d8 src/share/vm/opto/doCall.cpp
--- a/src/share/vm/opto/doCall.cpp Wed Sep 10 09:05:31 2014 -0700
+++ b/src/share/vm/opto/doCall.cpp Thu Sep 11 15:16:57 2014 -0700
@@ -768,8 +768,8 @@
assert(stopped(), "call set_map(NULL) first");
assert(method()->has_exception_handlers(), "don't come here w/o work to do");
- Node* ex_node = saved_ex_oop(ex_map);
- if (ex_node == top()) {
+ Node* saved_ex_node = saved_ex_oop(ex_map);
+ if (saved_ex_node == top()) {
// No action needed.
return;
}
@@ -785,12 +785,22 @@
// Start executing from the given throw state. (Keep its stack, for now.)
// Get the exception oop as known at compile time.
- ex_node = use_exception_state(ex_map);
+ Node* ex_node = use_exception_state(ex_map);
// Get the exception oop klass from its header
Node* ex_klass_node = NULL;
if (has_ex_handler() && !ex_type->klass_is_exact()) {
Node* p = basic_plus_adr( ex_node, ex_node, oopDesc::klass_offset_in_bytes());
+#ifdef ASSERT
+ if (p->bottom_type()->isa_ptr() == NULL) {
+ tty->print_cr("******** Expecting TypeClassPtr 0 ********");
+ tty->print_cr("*** compilation %s", failing() ? "failing" : "continue");
+ tty->print_cr("*** save_ex_node:");
+ saved_ex_node->dump(1);
+ tty->print_cr("*** ex_node:");
+ ex_node->dump(1);
+ }
+#endif
ex_klass_node = _gvn.transform( LoadKlassNode::make(_gvn, immutable_memory(), p, TypeInstPtr::KLASS, TypeKlassPtr::OBJECT) );
// Compute the exception klass a little more cleverly.
@@ -803,6 +813,16 @@
ex_klass_node = new (C) PhiNode( ex_node->in(0), TypeKlassPtr::OBJECT );
for( uint i = 1; i < ex_node->req(); i++ ) {
Node* p = basic_plus_adr( ex_node->in(i), ex_node->in(i), oopDesc::klass_offset_in_bytes() );
+#ifdef ASSERT
+ if (p->bottom_type()->isa_ptr() == NULL) {
+ tty->print_cr("******** Expecting TypeClassPtr 1 ********");
+ tty->print_cr("*** compilation %s", failing() ? "failing" : "continue");
+ tty->print_cr("*** save_ex_node:");
+ saved_ex_node->dump(1);
+ tty->print_cr("*** ex_node:");
+ ex_node->dump(1);
+ }
+#endif
Node* k = _gvn.transform( LoadKlassNode::make(_gvn, immutable_memory(), p, TypeInstPtr::KLASS, TypeKlassPtr::OBJECT) );
ex_klass_node->init_req( i, k );
}
More information about the hotspot-compiler-dev
mailing list