diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp
index 47d156c1f9e060402b62548565c236d258988579..c9e8535b75c4a95ad844438a0c595e853f5991e5 100644
--- a/ndb/src/mgmsrv/MgmtSrvr.cpp
+++ b/ndb/src/mgmsrv/MgmtSrvr.cpp
@@ -2107,6 +2107,7 @@ int
 MgmtSrvr::abortBackup(Uint32 backupId)
 {
   SignalSender ss(theFacade);
+  ss.lock(); // lock will be released on exit
 
   bool next;
   NodeId nodeId = 0;
diff --git a/ndb/src/ndbapi/SignalSender.cpp b/ndb/src/ndbapi/SignalSender.cpp
index a29fe68937b3394ee47a55b12359f091c0c25620..0ecc98f5f29b18cab1508c238e2886ebfbe8a9c7 100644
--- a/ndb/src/ndbapi/SignalSender.cpp
+++ b/ndb/src/ndbapi/SignalSender.cpp
@@ -75,7 +75,9 @@ SignalSender::SignalSender(TransporterFacade *facade)
 {
   m_cond = NdbCondition_Create();
   theFacade = facade;
+  lock();
   m_blockNo = theFacade->open(this, execSignal, execNodeStatus);
+  unlock();
   assert(m_blockNo > 0);
 }