JDK-6843375 : Debuggee VM crashes performing mark-sweep-compact
  • Type: Bug
  • Component: hotspot
  • Sub-Component: jvmti
  • Affected Version: 6u1
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-05-20
  • Updated: 2013-06-26
  • Resolved: 2013-05-28
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 JDK 8 Other
7u40Fixed 8Fixed hs24Fixed
Description
Debuggee VM intermittently crashes when performing full collection of
ParallelScavengeHeap.

THE ISSUE APPEARS UNDER THE FOLLOWING CONDITIONS:

1. Parallel or ParallelOld CG is used.
2. VM_Thread is executing a Full GC operation. GC performs compaction on
   PermGen (i.e. there are dead objects there).
3. At the same time there is a pending VM_ChangeBreakpoints operation in
   the VM operation queue which is intended to clear a JVMTI breakpoint.

Comments
SUGGESTED FIX --- hotspot/src/share/vm/prims/jvmtiImpl.cpp (revision 566) +++ hotspot/src/share/vm/prims/jvmtiImpl.cpp (working copy) @@ -392,9 +392,8 @@ void VM_ChangeBreakpoints::oops_do(OopClosure* f) { // This operation keeps breakpoints alive - if (_breakpoints != NULL) { - _breakpoints->oops_do(f); - } + // We don't call here _breakpoints->oops_do(), + // the list of breakpoints will be processed from JvmtiExport::oops_do() if (_bp != NULL) { _bp->oops_do(f); }
20-05-2009