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