6812971: SA: re-attaching to process fails
Summary: After attaching, de-attaching SA from a process, the second time attach() call fails. This happens because in VM.initialize(), Universe does not get re-initialized before it is accessed.
Reviewed-by: swamyv
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Thu Mar 05 22:07:29 2009 -0500
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Sun Mar 15 18:11:46 2009 -0700
@@ -342,11 +342,13 @@
throw new RuntimeException("Attempt to initialize VM twice");
}
soleInstance = new VM(db, debugger, debugger.getMachineDescription().isBigEndian());
- debugger.putHeapConst(Universe.getHeapBase(), soleInstance.getHeapOopSize(),
- soleInstance.logMinObjAlignmentInBytes);
+
for (Iterator iter = vmInitializedObservers.iterator(); iter.hasNext(); ) {
((Observer) iter.next()).update(null, null);
}
+
+ debugger.putHeapConst(Universe.getHeapBase(), soleInstance.getHeapOopSize(),
+ soleInstance.logMinObjAlignmentInBytes);
}
/** This is used by the debugging system */