RFR: 8364501: Compiler shutdown crashes on access to deleted CompileTask

Aleksey Shipilev shade at openjdk.org
Fri Aug 8 12:45:00 UTC 2025


See the bug for more investigation. 

In short, with recent changes to `delete` `CompileTask`-s, we end up in the rare situation where we can access tasks that have been already deleted. One mistake I did myself right with [JDK-8361752](https://bugs.openjdk.org/browse/JDK-8361752) in `CompileQueue::delete_all`: the code first deletes, then asks for `next` (facepalms). 

Another case is less trivial, and mostly fix in abundance of caution: in `wait_for_completion`, we can exit while blocking task is still in queue. Current code skip deletions only when compiler is shutdown for compilation, but I think the condition should be stronger: unless the task is completed, we should assume it might carry the queue-ing `next`/`prev` pointers that `delete_all` would need, and skip deletion. Realistically, it would "leak" only on compiler shutdown, like before.

I have also put in some diagnostic code to catch the lifecycle issues like this more reliably, and cleaned up `next`, `prev` lifecycle to clearly disconnect the `CompileTasks` that are no longer in queue.

Additional testing:
 - [x] Linux AArch64 server fastdebug, reproducer no longer fails
 - [x] Linux AArch64 server fastdebug, `compiler`
 - [ ] Linux AArch64 server fastdebug, `all`

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

Commit messages:
 - Comment touchups
 - Touchups
 - Fix

Changes: https://git.openjdk.org/jdk/pull/26696/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26696&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8364501
  Stats: 24 lines in 3 files changed: 16 ins; 0 del; 8 mod
  Patch: https://git.openjdk.org/jdk/pull/26696.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26696/head:pull/26696

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


More information about the hotspot-compiler-dev mailing list