The following C program:

#include <mpi.h>

int main(int argc, char** argv) {
  int blocklengths;
  MPI_Aint displacements;
  MPI_Datatype types, dt;
  int x;
  MPI_Init(&argc, &argv);
  MPI_Type_struct(0, &blocklengths, &displacements, &types, &dt);
  MPI_Type_commit(&dt);
  MPI_Send(&x, 1, dt, MPI_PROC_NULL, 0, MPI_COMM_WORLD);
  MPI_Type_free(&dt);
  MPI_Finalize();
  return 0;
}

produces a segmentation fault (caused by a NULL pointer dereference) when run with Open MPI 1.6.1, but only when using Valgrind. Running without Valgrind does not cause any issues; the failure appears to be in the code that checks whether MPI buffers are valid. The configure flags I used to build Open MPI were a prefix and:

--disable-pretty-print-stacktrace --enable-mpi-thread-multiple --enable-memchecker --enable-mca-no-build=btl-openib --enable-debug

and I am using GCC 4.7.1 on Linux. Is this a known issue? Thank you for your help.

-- Jeremiah Willcock

Reply via email to