diff --git a/source/RobotAPI/libraries/skills/core/SkillDescription.h b/source/RobotAPI/libraries/skills/core/SkillDescription.h
index 4bc8a3cd8fe92f7ebdf13c32b1e812be8596fbbd..784afd9321f4d677109c1f43672f0bdff4846db8 100644
--- a/source/RobotAPI/libraries/skills/core/SkillDescription.h
+++ b/source/RobotAPI/libraries/skills/core/SkillDescription.h
@@ -30,6 +30,16 @@ namespace armarx
             static SkillDescription FromIce(const provider::dto::SkillDescription& i,
                                             const std::optional<ProviderID>& = std::nullopt);
             static SkillDescription FromIce(const manager::dto::SkillDescription& i);
+
+            bool
+            operator==(const SkillDescription& other) const
+            {
+                return this->skillId == other.skillId && this->description == other.description &&
+                       this->rootProfileDefaults == other.rootProfileDefaults &&
+                       this->timeout == other.timeout &&
+                       this->parametersType == other.parametersType &&
+                       this->resultType == other.resultType;
+            }
         };
 
         template <class T>
diff --git a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
index 0bfd294f417f9bef5200d32f828b9b95e04625f8..35b30d4828b3b67864cfeb7697e089fb21a30464 100644
--- a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
+++ b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
@@ -205,6 +205,7 @@ namespace armarx::skills::gui
             try
             {
                 ARMARX_INFO << "Aborting skill '" << executionId.skillId.skillName << "'...";
+                std::scoped_lock l(mutex_memory);
                 this->memory->abortSkillAsync(executionId.toManagerIce());
             }
             catch (Ice::Exception const& e)