From 35bf682f7938ea6ddfa9525249c6a4cbb1f16071 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 29 Sep 2024 19:22:21 +0800 Subject: [PATCH] FIX: hybrid tree support crash in some case jira: STUDIO-8313 Change-Id: Ide03d8f666232f457305f3dd298bf8151ba9c57b --- src/libslic3r/Support/TreeSupport.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index a73352315..d04ae67b4 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3663,7 +3663,10 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke const auto &radius = key.radius; const auto &layer_nr = key.layer_nr; if (layer_nr == 0) { - m_avoidance_cache[key] = get_collision(radius, 0); + // avoid ExPolygons:~ExPolygons() in multi-threading case, as it's not thread-safe and may + // cause crash in some cases. See STUDIO-8313. + if (m_avoidance_cache.find(key) == m_avoidance_cache.end()) + m_avoidance_cache[key] = get_collision(radius, 0); return m_avoidance_cache[key]; }