From f5ad0a2a3554dc8f10c8fbba5715b7c92ff1d350 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 31 Aug 2017 23:41:46 +0200 Subject: [PATCH] don't eat the errno of when dlopen fails (but still remove the copied binary) --- src/smpi/internals/smpi_global.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index aa46baa987..1ccc8bfbae 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -605,10 +605,11 @@ int smpi_main(const char* executable, int argc, char *argv[]) // Load the copy and resolve the entry point: void* handle = dlopen(target_executable.c_str(), RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); + int saved_errno = errno; if (xbt_cfg_get_boolean("smpi/keep-temps") == false) unlink(target_executable.c_str()); if (handle == nullptr) - xbt_die("dlopen failed: %s (errno: %d -- %s)", dlerror(), errno, strerror(errno)); + xbt_die("dlopen failed: %s (errno: %d -- %s)", dlerror(), saved_errno, strerror(saved_errno)); smpi_entry_point_type entry_point = smpi_resolve_function(handle); if (not entry_point) xbt_die("Could not resolve entry point"); -- 2.20.1