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