Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
print backtrace when we exit due to an MPI failure
authorAugustin Degomme <adegomme@users.noreply.github.com>
Mon, 5 Apr 2021 10:28:18 +0000 (12:28 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Tue, 6 Apr 2021 18:07:16 +0000 (20:07 +0200)
src/smpi/bindings/smpi_mpi.cpp

index 7125608..85be4db 100644 (file)
@@ -48,9 +48,13 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_mpi, smpi, "Logging specific to SMPI ,(mpi)
       MPI_Errhandler err = (errhan) ? (errhan)->errhandler() : MPI_ERRHANDLER_NULL;                                    \
       if (err == MPI_ERRHANDLER_NULL || err == MPI_ERRORS_RETURN)                                                      \
         XBT_WARN("%s - returned %.*s instead of MPI_SUCCESS", __func__, error_size, error_string);                     \
-      else if (err == MPI_ERRORS_ARE_FATAL)                                                                            \
+      else if (err == MPI_ERRORS_ARE_FATAL){                                                                           \
+        if (xbt_log_no_loc)                                                                                            \
+          XBT_INFO("The backtrace would be displayed here if --log=no_loc would not have been passed");                \
+        else                                                                                                           \
+          xbt_backtrace_display_current();                                                                             \
         xbt_die("%s - returned %.*s instead of MPI_SUCCESS", __func__, error_size, error_string);                      \
-      else                                                                                                             \
+      } else                                                                                                           \
         err->call((errhan), ret);                                                                                      \
       if (err != MPI_ERRHANDLER_NULL)                                                                                  \
         simgrid::smpi::Errhandler::unref(err);                                                                         \