From 6bdaf0eaec949e1f50556c83d9e19fe94302a528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 2 Jun 2022 11:51:43 +0200 Subject: [PATCH] Follow-up of a47446574eb3f831907248dc841eb6f7684bbdb3 - Disable tbb::task_scheduler_observer in TBBLocalesSetter destructor. The base class wasn't disabling observing when tbb::task_scheduler_observer was destructed, which leads to undefined behavior. --- src/libslic3r/GCode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 1f7eaba240..58951ffa5a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1501,7 +1501,7 @@ class TBBLocalesSetter : public tbb::task_scheduler_observer { public: TBBLocalesSetter() { this->observe(true); } - ~TBBLocalesSetter() override = default; + ~TBBLocalesSetter() override { this->observe(false); }; void on_scheduler_entry(bool is_worker) override { @@ -1513,7 +1513,7 @@ public: } private: - tbb::enumerable_thread_specific, tbb::ets_key_usage_type::ets_key_per_instance> m_is_locales_sets; + tbb::enumerable_thread_specific, tbb::ets_key_usage_type::ets_key_per_instance> m_is_locales_sets{false}; }; // Process all layers of all objects (non-sequential mode) with a parallel pipeline: