RFR: 8358343: [leyden] Drop notify_all in CompilationPolicyUtils::Queue::pop
Igor Veresov
iveresov at openjdk.org
Fri Jun 6 07:34:46 UTC 2025
On Tue, 3 Jun 2025 17:59:51 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
> Found this when reading premain-vs-mainline webrev. Mainline does not have `notify_all` in this method:
> https://github.com/openjdk/jdk/blob/c382da579884c28f2765b2c6ba68c0ad4fdcb2ce/src/hotspot/share/compiler/compilationPolicy.hpp#L85-L92
>
> But if you remove `notify_all()` in `premain`, then tests start to deadlock, see bug for a sample. The culprit is `CompilationPolicy::flush_replay_training_at_init`, which is only present in premain. I fixed it by using timed waits, which obviates the need for extra notifications. We only enter this method with `-XX:+AOTVerifyTrainingData`, so we don't care much about its performance. This is IMO better than doing a questionable `notify_all` followed by `wait` in load-bearing code.
>
> Additional testing:
> - [x] Linux x86_64 server fastdebug, `runtime/cds` (5x, no timeouts yet; still running more iterations)
I don't remember. :) I'm just not a big fan of spin-waits even with sleeps inside...
-------------
PR Comment: https://git.openjdk.org/leyden/pull/74#issuecomment-2948362494
More information about the leyden-dev
mailing list