JDK-8030210 : HS24 crashing duing GC while following stacks on hosts with a lot of CPU cores and memory
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs24
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2013-12-16
  • Updated: 2015-03-19
  • Resolved: 2013-12-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.
JDK 7
7u60Resolved
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Description
HS24 crashing duing GC while following stacks on hosts with a lot of CPU cores and memory with various collectors. Issue could be reproduced on same hosts with the same testcase.

With parallel GC:
;; Using jvm: "/scratch/local/common/jdk/baseline/linux-amd64/jre/lib/amd64/server/libjvm.so"
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f6cd2f8f8e1, pid=1806, tid=140105111656192
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b01) (build 1.7.0_60-ea-langtools-nightly-h431-20131126-b01-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b02 compiled mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x5bc8e1]  oopDesc::size_given_klass(Klass*)+0x1
#
# Core dump written. Default location: /scratch/local/323377.JAVASE.NIGHTLY.VM.7u60_Nightly_Baseline.2013-11-26.linux-amd64_vm__server_comp_vm.gc.testlist.runTests/results/ResultDir/steal001/core or core.1806
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
...
Stack: [0x00007f6cc3595000,0x00007f6cc3696000],  sp=0x00007f6cc3694a50,  free space=1022k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x5bc8e1]  oopDesc::size_given_klass(Klass*)+0x1;;  oopDesc::size_given_klass(Klass*)+0x1
V  [libjvm.so+0x8689dc]  ParCompactionManager::follow_marking_stacks()+0x1ec;;  ParCompactionManager::follow_marking_stacks()+0x1ec
V  [libjvm.so+0x8503be]  ThreadRootsMarkingTask::do_it(GCTaskManager*, unsigned int)+0xde;;  ThreadRootsMarkingTask::do_it(GCTaskManager*, unsigned int)+0xde
V  [libjvm.so+0x551b9f]  GCTaskThread::run()+0x12f;;  GCTaskThread::run()+0x12f
V  [libjvm.so+0x816178]  java_start(Thread*)+0x108;;  java_start(Thread*)+0x108

With G1 GC:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f25ebd9be45, pid=907, tid=139796455053056
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b01) (build 1.7.0_60-ea-langtools-nightly-h436-20131126-b01-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b03 compiled mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x5b3e45]  instanceKlass::oop_follow_contents(oopDesc*)+0x3d5
#
# Core dump written. Default location: /tmp/test/core or core.907
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
...
Stack: [0x00007f24e5fb5000,0x00007f24e60b6000],  sp=0x00007f24e60b3b60,  free space=1018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x5b3e45]  instanceKlass::oop_follow_contents(oopDesc*)+0x3d5
V  [libjvm.so+0x781854]  MarkSweep::follow_stack()+0x44
V  [libjvm.so+0x8090fb]  OopMapSet::all_do(frame const*, RegisterMap const*, OopClosure*, void (*)(oopDesc**, oopDesc**), OopClosure*)+0x2fb
V  [libjvm.so+0x51c099]  frame::oops_do_internal(OopClosure*, CodeBlobClosure*, RegisterMap*, bool)+0x99
V  [libjvm.so+0x94932a]  JavaThread::oops_do(OopClosure*, CodeBlobClosure*)+0x15a
V  [libjvm.so+0x94a436]  Threads::possibly_parallel_oops_do(OopClosure*, CodeBlobClosure*)+0x56
V  [libjvm.so+0x8a6d72]  SharedHeap::process_strong_roots(bool, bool, SharedHeap::ScanningOption, OopClosure*, CodeBlobClosure*, OopsInGenClosure*)+0xa2
V  [libjvm.so+0x5473a2]  G1MarkSweep::mark_sweep_phase1(bool&, bool)+0x72
V  [libjvm.so+0x5475e5]  G1MarkSweep::invoke_at_safepoint(ReferenceProcessor*, bool)+0xa5
V  [libjvm.so+0x529086]  G1CollectedHeap::do_collection(bool, bool, unsigned long)+0x696
V  [libjvm.so+0x52a92e]  G1CollectedHeap::satisfy_failed_allocation(unsigned long, bool*)+0x8e
V  [libjvm.so+0x99e03f]  VM_G1CollectForAllocation::doit()+0x7f
V  [libjvm.so+0x99d105]  VM_Operation::evaluate()+0x55
V  [libjvm.so+0x99b53a]  VMThread::evaluate_operation(VM_Operation*)+0xba
V  [libjvm.so+0x99b8be]  VMThread::loop()+0x1ce
V  [libjvm.so+0x99bd30]  VMThread::run()+0x70
V  [libjvm.so+0x8161f8]  java_start(Thread*)+0x108

With Serial GC:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f3dd4d26843, pid=26269, tid=139903295862528
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b01) (build 1.7.0_60-ea-langtools-nightly-h436-20131126-b01-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b03 compiled mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x781843]  MarkSweep::follow_stack()+0x33
#
# Core dump written. Default location: /tmp/test/core or core.26269
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
...
Stack: [0x00007f3dc630b000,0x00007f3dc640c000],  sp=0x00007f3dc640a1e0,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x781843]  MarkSweep::follow_stack()+0x33
V  [libjvm.so+0x965a16]  Universe::oops_do(OopClosure*, bool)+0x536
V  [libjvm.so+0x8a6f4a]  SharedHeap::process_strong_roots(bool, bool, SharedHeap::ScanningOption, OopClosure*, CodeBlobClosure*, OopsInGenClosure*)+0x27a
V  [libjvm.so+0x562854]  GenCollectedHeap::gen_process_strong_roots(int, bool, bool, bool, SharedHeap::ScanningOption, OopsInGenClosure*, bool, OopsInGenClosure*)+0x74
V  [libjvm.so+0x566172]  GenMarkSweep::mark_sweep_phase1(int, bool)+0xa2
V  [libjvm.so+0x56686f]  GenMarkSweep::invoke_at_safepoint(int, ReferenceProcessor*, bool)+0x18f
V  [libjvm.so+0x572594]  OneContigSpaceCardGeneration::collect(bool, bool, unsigned long, bool)+0xa4
V  [libjvm.so+0x56515b]  GenCollectedHeap::do_collection(bool, bool, unsigned long, bool, int)+0x54b
V  [libjvm.so+0x4284c9]  GenCollectorPolicy::satisfy_failed_allocation(unsigned long, bool)+0x1a9
V  [libjvm.so+0x9954c4]  VM_GenCollectForAllocation::doit()+0x94
V  [libjvm.so+0x99d105]  VM_Operation::evaluate()+0x55
V  [libjvm.so+0x99b53a]  VMThread::evaluate_operation(VM_Operation*)+0xba
V  [libjvm.so+0x99b8be]  VMThread::loop()+0x1ce
V  [libjvm.so+0x99bd30]  VMThread::run()+0x70
V  [libjvm.so+0x8161f8]  java_start(Thread*)+0x108

Comments
I had a look at the core file. Just as in JDK-8029679, we are trying read the field Node.left in an instance object of nsk.share.gc.Node. The problem is that the field Node.left points at the klassOop (this is JDK 7) instead of at the header for a Node object (can't say if this is the Node object that is intended to be Node.left, all I can say is that it is *a* Node object).
20-12-2013