int res = entry_point(argc, argv.get());
if (res != 0){
XBT_WARN("SMPI process did not return 0. Return value : %d", res);
- smpi_process()->set_return_value(res);
if (smpi_exit_status == 0)
smpi_exit_status = res;
}
+ "_" + std::to_string(rank++) + ".so";
int fdin = open(executable_copy.c_str(), O_RDONLY);
- xbt_assert(fdin >= 0, "Cannot read from %s", executable_copy.c_str());
+ xbt_assert(fdin >= 0, "Cannot read from %s. Please make sure that the file exists and is executable.",
+ executable_copy.c_str());
int fdout = open(target_executable.c_str(), O_CREAT | O_RDWR, S_IRWXU);
xbt_assert(fdout >= 0, "Cannot write into %s", target_executable.c_str());
else {
// Load the dynamic library and resolve the entry point:
- void* handle = dlopen(executable, RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND);
+ void* handle = dlopen(executable, RTLD_LAZY | RTLD_LOCAL);
if (handle == nullptr)
xbt_die("dlopen failed for %s: %s (errno: %d -- %s)", executable, dlerror(), errno, strerror(errno));
smpi_entry_point_type entry_point = smpi_resolve_function(handle);