Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
This computation was incorrect and actually prevented this case to happen.
authordegomme <augustin.degomme@unibas.ch>
Wed, 15 Feb 2017 01:05:35 +0000 (02:05 +0100)
committerdegomme <augustin.degomme@unibas.ch>
Wed, 15 Feb 2017 01:07:59 +0000 (02:07 +0100)
This may fix the last bugs in privatization on some systems

src/smpi/smpi_memory.cpp

index ec7ee46..934885a 100644 (file)
@@ -48,8 +48,8 @@ void smpi_get_executable_global_size()
          following the rw- area is the end of the data segment. It would
          be better to check with the size of the data segment. */
       if (i != map.end() && i->pathname.empty() && (i->prot & PROT_RWX) == PROT_RW
          following the rw- area is the end of the data segment. It would
          be better to check with the size of the data segment. */
       if (i != map.end() && i->pathname.empty() && (i->prot & PROT_RWX) == PROT_RW
-          && i->start_addr == (std::uint64_t) smpi_start_data_exe + smpi_size_data_exe) {
-        smpi_size_data_exe = i->end_addr - (std::uint64_t) smpi_start_data_exe;
+          && (char*)i->start_addr ==  smpi_start_data_exe + smpi_size_data_exe) {
+        smpi_size_data_exe = (char*)i->end_addr - smpi_start_data_exe;
       }
       return;
     }
       }
       return;
     }