diff --git a/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.cpp b/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.cpp index ce678319e71..74f09cb3257 100644 --- a/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.cpp +++ b/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.cpp @@ -9,7 +9,9 @@ void kotlin::gc::FinalizerProcessor::StartFinalizerThreadIfNone() noexcept { + std::unique_lock guard(threadCreatingMutex_); if (finalizerThread_.joinable()) return; + finalizerThread_ = ScopedThread(ScopedThread::attributes().name("GC finalizer processor"), [this] { Kotlin_initRuntimeIfNeeded(); { diff --git a/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.hpp b/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.hpp index 85cfca0e89c..f20acfc1b59 100644 --- a/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.hpp +++ b/kotlin-native/runtime/src/gc/cms/cpp/FinalizerProcessor.hpp @@ -38,6 +38,8 @@ private: std::mutex initializedMutex_; std::condition_variable initializedCondVar_; bool initialized_ = false; + + std::mutex threadCreatingMutex_; }; } // namespace kotlin::gc