From 0f2421857bf1087546e130a0234bd8a5c93de493 Mon Sep 17 00:00:00 2001 From: Peter Albrecht <albrecpe@gmail.com> Date: Thu, 21 Dec 2023 13:59:53 +0100 Subject: [PATCH] fix: deadlock in startExecutionWithParams --- .../skills_gui/memory/SkillManagerWrapper.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp index 0f99ff132..0bfd294f4 100644 --- a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp +++ b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp @@ -242,8 +242,6 @@ namespace armarx::skills::gui SkillManagerWrapper::startExecutionWithParams(skills::SkillID& skillId, aron::data::DictPtr const params) { - std::scoped_lock l(mutex_memory); - // Memory??? if (!memory) { @@ -259,7 +257,11 @@ namespace armarx::skills::gui return; } - const auto& skillDescriptions = this->fetchSkills().at(providerId.value()); + std::map<skills::SkillID, skills::SkillDescription> skillDescriptions; + { + skillDescriptions = this->fetchSkills().at(providerId.value()); + } + if (skillDescriptions.find(skillId) == skillDescriptions.end()) { ARMARX_IMPORTANT << "The Skill: '" << skillId.skillName @@ -281,7 +283,8 @@ namespace armarx::skills::gui try { - memory->begin_executeSkill(req.toManagerIce()); + std::scoped_lock l(mutex_memory); + memory->executeSkillAsync(req.toManagerIce()); } catch (Ice::Exception const& e) { -- GitLab