From d45ea8817ab2303b2decd8cbb2cd1bf5280aa181 Mon Sep 17 00:00:00 2001 From: Leo Korinth Date: Tue, 9 Dec 2025 13:29:20 +0100 Subject: [PATCH] 8373253: Re-work InjectGCWorkerCreationFailure for future changes --- src/hotspot/share/gc/shared/workerThread.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/hotspot/share/gc/shared/workerThread.cpp b/src/hotspot/share/gc/shared/workerThread.cpp index 3a999da59dc..b3cec90cb42 100644 --- a/src/hotspot/share/gc/shared/workerThread.cpp +++ b/src/hotspot/share/gc/shared/workerThread.cpp @@ -94,9 +94,6 @@ void WorkerThreads::initialize_workers() { } WorkerThread* WorkerThreads::create_worker(uint name_suffix) { - if (is_init_completed() && InjectGCWorkerCreationFailure) { - return nullptr; - } WorkerThread* const worker = new WorkerThread(_name, name_suffix, &_dispatcher); @@ -117,6 +114,13 @@ uint WorkerThreads::set_active_workers(uint num_workers) { "Invalid number of active workers %u (should be 1-%u)", num_workers, _max_workers); + if (_created_workers > 0 && InjectGCWorkerCreationFailure) { + assert(is_init_completed(), "Would be interesting to see if this ever happens"); + log_error(gc, task)("Failed to create worker thread (InjectGCWorkerCreationFailure)"); + _active_workers = MIN2(_created_workers, num_workers); + return _active_workers; + } + while (_created_workers < num_workers) { WorkerThread* const worker = create_worker(_created_workers); if (worker == nullptr) {