RFR: 8292879: com/sun/jdi/ClassUnloadEventTest.java failed due to classes not unloading

Chris Plummer cjplummer at openjdk.org
Sat Oct 1 01:20:20 UTC 2022


The bug is due to the debug agent still having a reference to one of the classes when the full GC is issued by the debuggee, thus keeping the classes loaded. The debug agent it about to free the reference, but doesn't do it quite soon enough, and then it is blocked from freeing it by the full GC. It does free it after the full GC, but by then it is too late, and the full GC has already failed to unload all the classes.

The debug agent class reference is coming from the ClassPrepareEvent that is sent for the last class loaded. The event has been sent to the debugger and the debug agent is about to free the reference, but the debuggee main thread has already resumed and gets to the full GC first. Adding a short delay in the debuggee main thread allows the debug agent to finish freeing the reference before the full GC is done.

-------------

Commit messages:
 - Add delay before full GC

Changes: https://git.openjdk.org/jdk/pull/10519/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10519&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8292879
  Stats: 10 lines in 1 file changed: 9 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/10519.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10519/head:pull/10519

PR: https://git.openjdk.org/jdk/pull/10519


More information about the serviceability-dev mailing list