Dear OpenMPI list,

I have used the dynamic rules for collectives to be able to select one specific algorithm. With the latest versions of openmpi this seems to be broken. Just enabling coll_tuned_use_dynamic_rules causes the code to segfault. However, I do not provide a file with rules, since I just want to modify the behavior of one routine.

I have tried the below example code on openmpi 1.3.2, 1.3.3, 1.3.4, and 1.4. It *works* on 1.3.2, 1.3.3, but segfaults on 1.3.4 and 1.4. I have confirmed this on Scientific Linux 5.2, and 5.4. I have also successfully reproduced the crash using version 1.4 running on debian etch. All running on amd64, compiled from source without other options to configure than --prefix. The crash occurs whether I use the intel 11.1 compiler (via env CC) or gcc. It also occurs no matter the btl is set to openib,self tcp,self sm,self or combinations of those. See below for ompi_info and other info. I have tried MPI_Alltoall, MPI_Alltoallv, and MPI_Allreduce which behave the same.

#include <stdlib.h>
#include <mpi.h>

int main(int argc, char **argv)
{
  int rank,size;
  char *buffer, *buffer2;

  MPI_Init(&argc,&argv);

  MPI_Comm_size(MPI_COMM_WORLD,&size);
  MPI_Comm_rank(MPI_COMM_WORLD,&rank);

  buffer=calloc(100*size,1);
  buffer2=calloc(100*size,1);

  MPI_Alltoall(buffer,100,MPI_BYTE,buffer2,100,MPI_BYTE,MPI_COMM_WORLD);

  MPI_Finalize();
  return 0;
}

Demonstrated behaviour:

$ ompi_info
                 Package: Open MPI daniels@arthur Distribution
                Open MPI: 1.4
   Open MPI SVN revision: r22285
   Open MPI release date: Dec 08, 2009
                Open RTE: 1.4
   Open RTE SVN revision: r22285
   Open RTE release date: Dec 08, 2009
                    OPAL: 1.4
       OPAL SVN revision: r22285
       OPAL release date: Dec 08, 2009
            Ident string: 1.4
Prefix: /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install
 Configured architecture: x86_64-unknown-linux-gnu
          Configure host: arthur
           Configured by: daniels
           Configured on: Tue Dec 29 16:54:37 CET 2009
          Configure host: arthur
                Built by: daniels
                Built on: Tue Dec 29 17:04:36 CET 2009
              Built host: arthur
              C bindings: yes
            C++ bindings: yes
      Fortran77 bindings: yes (all)
      Fortran90 bindings: yes
 Fortran90 bindings size: small
              C compiler: gcc
     C compiler absolute: /usr/bin/gcc
            C++ compiler: g++
   C++ compiler absolute: /usr/bin/g++
      Fortran77 compiler: gfortran
  Fortran77 compiler abs: /usr/bin/gfortran
      Fortran90 compiler: gfortran
  Fortran90 compiler abs: /usr/bin/gfortran
             C profiling: yes
           C++ profiling: yes
     Fortran77 profiling: yes
     Fortran90 profiling: yes
          C++ exceptions: no
          Thread support: posix (mpi: no, progress: no)
           Sparse Groups: no
  Internal debug support: no
     MPI parameter check: runtime
Memory profiling support: no
Memory debugging support: no
         libltdl support: yes
   Heterogeneous support: no
 mpirun default --prefix: no
         MPI I/O support: yes
       MPI_WTIME support: gettimeofday
Symbol visibility support: yes
   FT Checkpoint support: no  (checkpoint thread: no)
           MCA backtrace: execinfo (MCA v2.0, API v2.0, Component v1.4)
              MCA memory: ptmalloc2 (MCA v2.0, API v2.0, Component v1.4)
           MCA paffinity: linux (MCA v2.0, API v2.0, Component v1.4)

               MCA carto: auto_detect (MCA v2.0, API v2.0, Component v1.4)
               MCA carto: file (MCA v2.0, API v2.0, Component v1.4)
           MCA maffinity: first_use (MCA v2.0, API v2.0, Component v1.4)
               MCA timer: linux (MCA v2.0, API v2.0, Component v1.4)
         MCA installdirs: env (MCA v2.0, API v2.0, Component v1.4)
         MCA installdirs: config (MCA v2.0, API v2.0, Component v1.4)
                 MCA dpm: orte (MCA v2.0, API v2.0, Component v1.4)
              MCA pubsub: orte (MCA v2.0, API v2.0, Component v1.4)
           MCA allocator: basic (MCA v2.0, API v2.0, Component v1.4)
           MCA allocator: bucket (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: basic (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: hierarch (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: inter (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: self (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: sm (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: sync (MCA v2.0, API v2.0, Component v1.4)
                MCA coll: tuned (MCA v2.0, API v2.0, Component v1.4)
                  MCA io: romio (MCA v2.0, API v2.0, Component v1.4)
               MCA mpool: fake (MCA v2.0, API v2.0, Component v1.4)
               MCA mpool: rdma (MCA v2.0, API v2.0, Component v1.4)
               MCA mpool: sm (MCA v2.0, API v2.0, Component v1.4)
                 MCA pml: cm (MCA v2.0, API v2.0, Component v1.4)
                 MCA pml: csum (MCA v2.0, API v2.0, Component v1.4)
                 MCA pml: ob1 (MCA v2.0, API v2.0, Component v1.4)
                 MCA pml: v (MCA v2.0, API v2.0, Component v1.4)
                 MCA bml: r2 (MCA v2.0, API v2.0, Component v1.4)
              MCA rcache: vma (MCA v2.0, API v2.0, Component v1.4)
                 MCA btl: self (MCA v2.0, API v2.0, Component v1.4)
                 MCA btl: sm (MCA v2.0, API v2.0, Component v1.4)
                 MCA btl: tcp (MCA v2.0, API v2.0, Component v1.4)
                MCA topo: unity (MCA v2.0, API v2.0, Component v1.4)
                 MCA osc: pt2pt (MCA v2.0, API v2.0, Component v1.4)
                 MCA osc: rdma (MCA v2.0, API v2.0, Component v1.4)
                 MCA iof: hnp (MCA v2.0, API v2.0, Component v1.4)
                 MCA iof: orted (MCA v2.0, API v2.0, Component v1.4)
                 MCA iof: tool (MCA v2.0, API v2.0, Component v1.4)
                 MCA oob: tcp (MCA v2.0, API v2.0, Component v1.4)
                MCA odls: default (MCA v2.0, API v2.0, Component v1.4)
                 MCA ras: slurm (MCA v2.0, API v2.0, Component v1.4)
               MCA rmaps: load_balance (MCA v2.0, API v2.0, Component v1.4)
               MCA rmaps: rank_file (MCA v2.0, API v2.0, Component v1.4)
               MCA rmaps: round_robin (MCA v2.0, API v2.0, Component v1.4)
               MCA rmaps: seq (MCA v2.0, API v2.0, Component v1.4)
                 MCA rml: oob (MCA v2.0, API v2.0, Component v1.4)
              MCA routed: binomial (MCA v2.0, API v2.0, Component v1.4)
              MCA routed: direct (MCA v2.0, API v2.0, Component v1.4)
              MCA routed: linear (MCA v2.0, API v2.0, Component v1.4)
                 MCA plm: rsh (MCA v2.0, API v2.0, Component v1.4)
                 MCA plm: slurm (MCA v2.0, API v2.0, Component v1.4)
               MCA filem: rsh (MCA v2.0, API v2.0, Component v1.4)
              MCA errmgr: default (MCA v2.0, API v2.0, Component v1.4)
                 MCA ess: env (MCA v2.0, API v2.0, Component v1.4)
                 MCA ess: hnp (MCA v2.0, API v2.0, Component v1.4)
                 MCA ess: singleton (MCA v2.0, API v2.0, Component v1.4)
                 MCA ess: slurm (MCA v2.0, API v2.0, Component v1.4)
                 MCA ess: tool (MCA v2.0, API v2.0, Component v1.4)
             MCA grpcomm: bad (MCA v2.0, API v2.0, Component v1.4)
             MCA grpcomm: basic (MCA v2.0, API v2.0, Component v1.4)

$ mpicc -O2 -o bug_openmpi_1.4_test bug_openmpi_1.4_test.c
$ ldd ./bug_openmpi_1.4_test
libmpi.so.0 => /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0 (0x00002b33fa57e000) libopen-rte.so.0 => /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libopen-rte.so.0 (0x00002b33fa821000) libopen-pal.so.0 => /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libopen-pal.so.0 (0x00002b33faa6b000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00000032c7400000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00000032cfe00000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00000032d4a00000)
        libm.so.6 => /lib64/libm.so.6 (0x00000032c7000000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032c7800000)
        libc.so.6 => /lib64/libc.so.6 (0x00000032c6c00000)
        /lib64/ld-linux-x86-64.so.2 (0x00000032c5c00000)
$ mpirun -mca btl tcp,self -mca coll_tuned_use_dynamic_rules 0 -np 8 ./bug_openmpi_1.4_test $ mpirun -mca btl tcp,self -mca coll_tuned_use_dynamic_rules 1 -np 8 ./bug_openmpi_1.4_test
[girasole:27510] *** Process received signal ***
[girasole:27510] Signal: Segmentation fault (11)
[girasole:27510] Signal code:  (128)
[girasole:27510] Failing at address: (nil)
[girasole:27503] *** Process received signal ***
[girasole:27503] Signal: Segmentation fault (11)
[girasole:27503] Signal code:  (128)
[girasole:27503] Failing at address: (nil)
[girasole:27510] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27510] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2ae2b29fbeb5] [girasole:27510] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2ae2b29fa8ca] [girasole:27510] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2ae2ae76bbff]
[girasole:27510] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27510] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27510] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27510] *** End of error message ***
[girasole:27503] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27503] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b534b1b6eb5] [girasole:27503] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b534b1b58ca] [girasole:27503] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b5346f26bff]
[girasole:27503] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27503] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27503] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27503] *** End of error message ***
[girasole:27505] *** Process received signal ***
[girasole:27505] Signal: Segmentation fault (11)
[girasole:27505] Signal code:  (128)
[girasole:27505] Failing at address: (nil)
[girasole:27509] *** Process received signal ***
[girasole:27509] Signal: Segmentation fault (11)
[girasole:27509] Signal code:  (128)
[girasole:27509] Failing at address: (nil)
[girasole:27505] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27505] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2ab662aa0eb5] [girasole:27505] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2ab662a9f8ca] [girasole:27505] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2ab65e810bff]
[girasole:27505] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27505] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27505] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27505] *** End of error message ***
[girasole:27507] *** Process received signal ***
[girasole:27507] Signal: Segmentation fault (11)
[girasole:27507] Signal code:  (128)
[girasole:27507] Failing at address: (nil)
[girasole:27509] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27509] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b7dc1863eb5] [girasole:27509] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b7dc18628ca] [girasole:27509] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b7dbd5d3bff]
[girasole:27509] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27509] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27509] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27509] *** End of error message ***
[girasole:27507] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27507] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b09eb873eb5] [girasole:27507] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b09eb8728ca] [girasole:27507] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b09e75e3bff]
[girasole:27507] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27507] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27507] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27507] *** End of error message ***
[girasole:27504] *** Process received signal ***
[girasole:27504] Signal: Segmentation fault (11)
[girasole:27504] Signal code:  (128)
[girasole:27504] Failing at address: (nil)
[girasole:27506] *** Process received signal ***
[girasole:27506] Signal: Segmentation fault (11)
[girasole:27506] Signal code:  (128)
[girasole:27506] Failing at address: (nil)
[girasole:27504] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27504] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b6fde1afeb5] [girasole:27504] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b6fde1ae8ca] [girasole:27504] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b6fd9f1fbff]
[girasole:27504] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27504] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27504] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27504] *** End of error message ***
--------------------------------------------------------------------------
mpirun noticed that process rank 7 with PID 27510 on node girasole exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------
[girasole:27506] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27506] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b66f2908eb5] [girasole:27506] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b66f29078ca] [girasole:27506] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b66ee678bff]
[girasole:27506] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27506] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27506] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27506] *** End of error message ***
[girasole:27508] *** Process received signal ***
[girasole:27508] Signal: Segmentation fault (11)
[girasole:27508] Signal code:  (128)
[girasole:27508] Failing at address: (nil)
[girasole:27508] [ 0] /lib64/libpthread.so.0 [0x32c780de80]
[girasole:27508] [ 1] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b89b09a1eb5] [girasole:27508] [ 2] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/openmpi/mca_coll_tuned.so [0x2b89b09a08ca] [girasole:27508] [ 3] /home/daniels/src/MISC/openmpi-1.4/openmpi-1.4_install/lib/libmpi.so.0(MPI_Alltoall+0x15f) [0x2b89ac711bff]
[girasole:27508] [ 4] ./bug_openmpi_1.4_test(main+0x97) [0x4009b7]
[girasole:27508] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x32c6c1d8b4]
[girasole:27508] [ 6] ./bug_openmpi_1.4_test [0x400869]
[girasole:27508] *** End of error message ***


Best regards,

--
Daniel Spångberg
Materialkemi
Uppsala Universitet

Reply via email to