RFR (XS): 6843375: Debuggee VM crashes performing mark-sweep-compact
Erik Helin
erik.helin at oracle.com
Wed May 8 15:51:52 UTC 2013
Hi all,
this change fixes a problem when a VM_ChangeBreakpoint operation is
enqueued on the VMOperationQueue while at the same time as a GC is
running. The GC will process the strong roots and will call both
VMOperationQueue::oops_do (via Threads::oops_do) and JvmtiExport::oops_do.
VMOperationQueue::oops_do will call VM_ChangeBreakpoint::oops_do which
calls JvmtiBreakpoints::oops_do. The problem is that
JvmtiExport::oops_do calls JvmtiCurrentBreakpoints::oops_do which points
to the same JvmtiBreakpoints as the one VM_ChangeBreakpoint just called
oops_do on.
This change remove the code VM_ChangeBreakpoint that calls
JvmtiBreakpoints::oops_do. All the GCs will visit the breakpoints via
JvmtiExport.
Webrev:
http://cr.openjdk.java.net/~ehelin/6843375/webrev/
Testing:
JPRT
Bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6843375
Thanks,
Erik
More information about the hotspot-gc-dev
mailing list