Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Disable privatization when not run through smpi_main().
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sat, 31 Mar 2018 15:16:08 +0000 (17:16 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sat, 31 Mar 2018 16:51:47 +0000 (18:51 +0200)
SMPI_switch_data_segment is not initialized, and mmap privatization
is crashing when trying to call it.

src/smpi/internals/smpi_global.cpp

index 99323b6..06f18a0 100644 (file)
@@ -382,6 +382,10 @@ static void smpi_init_options(){
   else
     xbt_die("Invalid value for smpi/privatization: '%s'", smpi_privatize_option.c_str());
 
   else
     xbt_die("Invalid value for smpi/privatization: '%s'", smpi_privatize_option.c_str());
 
+  if (not SMPI_switch_data_segment) {
+    XBT_DEBUG("Running without smpi_main(); disable smpi/privatization.");
+    smpi_privatize_global_variables = SmpiPrivStrategies::None;
+  }
 #if defined(__FreeBSD__)
   if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
     XBT_INFO("mmap privatization is broken on FreeBSD, switching to dlopen privatization instead.");
 #if defined(__FreeBSD__)
   if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
     XBT_INFO("mmap privatization is broken on FreeBSD, switching to dlopen privatization instead.");