RFR: 8255980: G1 Service thread register_task can be used after shutdown

Stefan Johansson sjohanss at openjdk.java.net
Fri Nov 6 12:24:04 UTC 2020

Please review this change to improve the service thread task handling during shutdown.

This problem isn't currently visible, but with upcoming changes there is a race where tasks might be added to the service thread after it has been shut down. This becomes problematic because the task queue at that point consists of invalid objects. They are invalid because the tasks are currently stack-allocated on the service thread. This change both allocates the tasks handled by the service thread dynamically and add a check to avoid adding tasks when the service thread has been shut down. Just doing the dynamic allocation would be enough, but there is no reason to add tasks after the thread is shut down.

I've tested this fix together with my concurrent uncommit changes which highlight the problem, and also run tier1 and tier2 for sanity.


Commit messages:
 - 8255980: G1 Service thread register_task can be used after shutdown

Changes: https://git.openjdk.java.net/jdk/pull/1093/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1093&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8255980
  Stats: 31 lines in 2 files changed: 24 ins; 4 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1093.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1093/head:pull/1093

PR: https://git.openjdk.java.net/jdk/pull/1093

More information about the hotspot-gc-dev mailing list