From b9a13f6d8b6fde0b1347526d6a69d20e4b5e4010 Mon Sep 17 00:00:00 2001
From: Carsten Patzke <carsten.patzke@desy.de>
Date: Thu, 17 Sep 2020 12:17:32 +0200
Subject: [PATCH] Fixed dlopen race condition

---
 common/cpp/src/asapo_fabric/asapo_fabric.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/common/cpp/src/asapo_fabric/asapo_fabric.cpp b/common/cpp/src/asapo_fabric/asapo_fabric.cpp
index e4612b7c7..a74a25c93 100644
--- a/common/cpp/src/asapo_fabric/asapo_fabric.cpp
+++ b/common/cpp/src/asapo_fabric/asapo_fabric.cpp
@@ -3,6 +3,7 @@
 
 #ifdef LIBFABRIC_ENABLED
 #include <dlfcn.h>
+#include <mutex>
 #include "fabric_factory_impl.h"
 #include "fabric_function_map.h"
 #endif
@@ -11,6 +12,9 @@ using namespace asapo::fabric;
 
 std::unique_ptr<FabricFactory> asapo::fabric::GenerateDefaultFabricFactory() {
 #ifdef LIBFABRIC_ENABLED
+    static std::mutex lock;
+    std::unique_lock<std::mutex> local_lock (lock);
+
     if (gffm().is_init_) {
         return std::unique_ptr<FabricFactory>(new FabricFactoryImpl());
     }
-- 
GitLab