JDK-6623167 : C2 crashed in StoreCMNode::Value
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6u2
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2007-10-29
  • Updated: 2015-04-13
  • Resolved: 2011-04-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other Other JDK 6 Other
1.4.2_19-rev,OpenJDK6Fixed 1.4.2_21Fixed 6u6Fixed OpenJDK6,hs10Fixed
Description
When run customer application for debugging bug 6611406, the app crashed in C2 compiler:

  [1] __lwp_kill(0x13, 0x6, 0xffffffffb2c9fbc0, 0xfffffd7fff2f4c1e, 0x0, 0x6), at 0xfffffd7fff2f42ea
  [2] _thr_kill(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2ef2d3
  [3] raise(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff29ce19
  [4] abort(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff27c970
  [5] os::abort(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffee7ba74
  [6] VMError::report_and_die(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffef87375
  [7] JVM_handle_solaris_signal(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe915803
  [8] signalHandler(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe915a8e
  [9] __sighndlr(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2f1216
  [10] call_user_handler(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2e64a2
  [11] sigacthandler(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2e6688
  ---- called from signal handler with signal 11 (SIGSEGV) ------
=>[12] StoreCMNode::Value(0x7e70d0, 0xfffffd7fe9b70008, 0x1, 0x1, 0x0, 0x1f797e0), at 0xfffffd7ffee569d0
  [13] PhaseIterGVN::transform_old(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe8a0cc3
  [14] PhaseIterGVN::optimize(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe95f0d7
  [15] Compile::Optimize(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe9b4d85
  [16] Compile::Compile(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffebc442c
  [17] C2Compiler::compile_method(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe9b267d
  [18] CompileBroker::invoke_compiler_on_method(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffe9b220d
  [19] CompileBroker::compiler_thread_loop(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffea63fa8
  [20] compiler_thread_entry(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffea5eb49
  [21] JavaThread::thread_main_inner(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffea04e0d
  [22] JavaThread::run(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffea0472e
  [23] java_start(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffee7b01c
  [24] _thr_setup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2f0edb
  [25] _lwp_start(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2f1110

Comments
EVALUATION VM crashed since in(MemNode::OopStore) is 0. The node, it seems, is dead since it's inputs are control(0),mem(top),adr(0),val(0),oopst(0) If I am correct then the problem is that StoreCMNode::Value() miss first inputs checks which we have, for example, in StoreCMNode::Value() : const Type *StoreNode::Value( PhaseTransform *phase ) const { // Either input is TOP ==> the result is TOP const Type *t1 = phase->type( in(MemNode::Memory) ); if( t1 == Type::TOP ) return Type::TOP; const Type *t2 = phase->type( in(MemNode::Address) ); if( t2 == Type::TOP ) return Type::TOP; const Type *t3 = phase->type( in(MemNode::ValueIn) ); if( t3 == Type::TOP ) return Type::TOP;
29-10-2007