Tobias, Fwiw, MPI_Comm_compare can be used to compare communicators. Hopefully, this is also compiler friendly.
Cheers, Gilles On Tuesday, October 20, 2015, Tobias Hilbrich <tobias.hilbr...@tu-dresden.de> wrote: > Hi all, > > a wonderful puzzle for the OSX folks in your team (Reproducer attached): > > Attached source file builds with Xcode 7.0.0, but fails since the release > of Xcode 7.0.1. I post it here since it results from an "if (MPI_COMM_NULL > == MPI_COMM_SELF)". I am actually curious whether this is somehow off by > itself, or whether it has something to do with how you define these > constants. Overall, the situation is that this worked with previous clang > compilers (and that it again works for more recent versions from > mac-ports), so likely not your fault at all. > > The issue I get is: > $ mpicc osx-10.10.5-xcode-7.0.1-openmpi-problem.c > clang: error: unable to execute command: Segmentation fault: 11 > clang: error: clang frontend command failed due to signal (use -v to see > invocation) > Apple LLVM version 7.0.0 (clang-700.0.72) > Target: x86_64-apple-darwin14.5.0 > Thread model: posix > clang: note: diagnostic msg: PLEASE submit a bug report to > http://developer.apple.com/bugreporter/ and include the crash backtrace, > preprocessed source, and associated run script. > clang: note: diagnostic msg: > ******************** > PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: > ... > ******************** > > As I said above the culprit is "if (MPI_COMM_NULL == MPI_COMM_SELF)". > Also, this doesn't works either: > - "if (MPI_COMM_SELF == MPI_COMM_NULL)" > But then, these work: > - "if (MPI_COMM_SELF == MPI_COMM_WORLD)" > - "if (MPI_COMM_WORLD == MPI_COMM_SELF)" > > So it appears it has something to do with MPI_COMM_NULL specifically. > > Maybe you already know of the issue. Maybe you can provide something to > alleviate this issue in your releases, since it may take a while until we > get a newer Xcode version on most OSX'es. > > My "ompi_info" is at the bottom of the mail. > > With that thanks for your looking into this, and many thanks for your > wonderful MPI implementation, > -Tobias > > $ ompi_info > Package: Open MPI saibot@Tobiass-MacBook-Pro.local > Distribution > Open MPI: 1.8.4 > Open MPI repo revision: v1.8.3-330-g0344f04 > Open MPI release date: Dec 19, 2014 > Open RTE: 1.8.4 > Open RTE repo revision: v1.8.3-330-g0344f04 > Open RTE release date: Dec 19, 2014 > OPAL: 1.8.4 > OPAL repo revision: v1.8.3-330-g0344f04 > OPAL release date: Dec 19, 2014 > MPI API: 3.0 > Ident string: 1.8.4 > Prefix: /Users/saibot/local/openmpi-1.8.4 > Configured architecture: x86_64-apple-darwin14.0.0 > Configure host: Tobiass-MacBook-Pro.local > Configured by: saibot > Configured on: Sun Jan 4 09:27:07 CET 2015 > Configure host: Tobiass-MacBook-Pro.local > Built by: saibot > Built on: Sun Jan 4 09:33:26 CET 2015 > Built host: Tobiass-MacBook-Pro.local > C bindings: yes > C++ bindings: yes > Fort mpif.h: no > Fort use mpi: no > Fort use mpi size: deprecated-ompi-info-value > Fort use mpi_f08: no > Fort mpi_f08 compliance: The mpi_f08 module was not built > Fort mpi_f08 subarrays: no > Java bindings: no > Wrapper compiler rpath: unnecessary > C compiler: gcc > C compiler absolute: /usr/bin/gcc > C compiler family name: GNU > C compiler version: 4.2.1 > C++ compiler: g++ > C++ compiler absolute: /usr/bin/g++ > Fort compiler: none > Fort compiler abs: none > Fort ignore TKR: no > Fort 08 assumed shape: no > Fort optional args: no > Fort INTERFACE: no > Fort ISO_FORTRAN_ENV: no > Fort STORAGE_SIZE: no > Fort BIND(C) (all): no > Fort ISO_C_BINDING: no > Fort SUBROUTINE BIND(C): no > Fort TYPE,BIND(C): no > Fort T,BIND(C,name="a"): no > Fort PRIVATE: no > Fort PROTECTED: no > Fort ABSTRACT: no > Fort ASYNCHRONOUS: no > Fort PROCEDURE: no > Fort C_FUNLOC: no > Fort f08 using wrappers: no > Fort MPI_SIZEOF: no > C profiling: yes > C++ profiling: yes > Fort mpif.h profiling: no > Fort use mpi profiling: no > Fort use mpi_f08 prof: no > C++ exceptions: no > Thread support: posix (MPI_THREAD_MULTIPLE: no, OPAL support: yes, > OMPI progress: no, ORTE progress: yes, Event lib: > yes) > Sparse Groups: no > Internal debug support: no > MPI interface warnings: yes > 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 vis. support: yes > Host topology support: yes > MPI extensions: > FT Checkpoint support: no (checkpoint thread: no) > C/R Enabled Debugging: no > VampirTrace support: yes > MPI_MAX_PROCESSOR_NAME: 256 > MPI_MAX_ERROR_STRING: 256 > MPI_MAX_OBJECT_NAME: 64 > MPI_MAX_INFO_KEY: 36 > MPI_MAX_INFO_VAL: 256 > MPI_MAX_PORT_NAME: 1024 > MPI_MAX_DATAREP_STRING: 128 > MCA backtrace: execinfo (MCA v2.0, API v2.0, Component v1.8.4) > MCA compress: bzip (MCA v2.0, API v2.0, Component v1.8.4) > MCA compress: gzip (MCA v2.0, API v2.0, Component v1.8.4) > MCA crs: none (MCA v2.0, API v2.0, Component v1.8.4) > MCA db: hash (MCA v2.0, API v1.0, Component v1.8.4) > MCA db: print (MCA v2.0, API v1.0, Component v1.8.4) > MCA event: libevent2021 (MCA v2.0, API v2.0, Component v1.8.4) > MCA hwloc: hwloc191 (MCA v2.0, API v2.0, Component v1.8.4) > MCA if: bsdx_ipv6 (MCA v2.0, API v2.0, Component v1.8.4) > MCA if: posix_ipv4 (MCA v2.0, API v2.0, Component v1.8.4) > MCA installdirs: env (MCA v2.0, API v2.0, Component v1.8.4) > MCA installdirs: config (MCA v2.0, API v2.0, Component v1.8.4) > MCA pstat: test (MCA v2.0, API v2.0, Component v1.8.4) > MCA sec: basic (MCA v2.0, API v1.0, Component v1.8.4) > MCA shmem: mmap (MCA v2.0, API v2.0, Component v1.8.4) > MCA shmem: posix (MCA v2.0, API v2.0, Component v1.8.4) > MCA shmem: sysv (MCA v2.0, API v2.0, Component v1.8.4) > MCA timer: darwin (MCA v2.0, API v2.0, Component v1.8.4) > MCA dfs: app (MCA v2.0, API v1.0, Component v1.8.4) > MCA dfs: orted (MCA v2.0, API v1.0, Component v1.8.4) > MCA dfs: test (MCA v2.0, API v1.0, Component v1.8.4) > MCA errmgr: default_app (MCA v2.0, API v3.0, Component v1.8.4) > MCA errmgr: default_hnp (MCA v2.0, API v3.0, Component v1.8.4) > MCA errmgr: default_orted (MCA v2.0, API v3.0, Component > v1.8.4) > MCA errmgr: default_tool (MCA v2.0, API v3.0, Component v1.8.4) > MCA ess: env (MCA v2.0, API v3.0, Component v1.8.4) > MCA ess: hnp (MCA v2.0, API v3.0, Component v1.8.4) > MCA ess: singleton (MCA v2.0, API v3.0, Component v1.8.4) > MCA ess: slurm (MCA v2.0, API v3.0, Component v1.8.4) > MCA ess: tool (MCA v2.0, API v3.0, Component v1.8.4) > MCA filem: raw (MCA v2.0, API v2.0, Component v1.8.4) > MCA grpcomm: bad (MCA v2.0, API v2.0, Component v1.8.4) > MCA iof: hnp (MCA v2.0, API v2.0, Component v1.8.4) > MCA iof: mr_hnp (MCA v2.0, API v2.0, Component v1.8.4) > MCA iof: mr_orted (MCA v2.0, API v2.0, Component v1.8.4) > MCA iof: orted (MCA v2.0, API v2.0, Component v1.8.4) > MCA iof: tool (MCA v2.0, API v2.0, Component v1.8.4) > MCA odls: default (MCA v2.0, API v2.0, Component v1.8.4) > MCA oob: tcp (MCA v2.0, API v2.0, Component v1.8.4) > MCA plm: isolated (MCA v2.0, API v2.0, Component v1.8.4) > MCA plm: rsh (MCA v2.0, API v2.0, Component v1.8.4) > MCA plm: slurm (MCA v2.0, API v2.0, Component v1.8.4) > MCA ras: simulator (MCA v2.0, API v2.0, Component v1.8.4) > MCA ras: slurm (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: lama (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: mindist (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: ppr (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: rank_file (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: resilient (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: round_robin (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: seq (MCA v2.0, API v2.0, Component v1.8.4) > MCA rmaps: staged (MCA v2.0, API v2.0, Component v1.8.4) > MCA rml: oob (MCA v2.0, API v2.0, Component v1.8.4) > MCA routed: binomial (MCA v2.0, API v2.0, Component v1.8.4) > MCA routed: debruijn (MCA v2.0, API v2.0, Component v1.8.4) > MCA routed: direct (MCA v2.0, API v2.0, Component v1.8.4) > MCA routed: radix (MCA v2.0, API v2.0, Component v1.8.4) > MCA state: app (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: hnp (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: novm (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: orted (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: staged_hnp (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: staged_orted (MCA v2.0, API v1.0, Component v1.8.4) > MCA state: tool (MCA v2.0, API v1.0, Component v1.8.4) > MCA allocator: basic (MCA v2.0, API v2.0, Component v1.8.4) > MCA allocator: bucket (MCA v2.0, API v2.0, Component v1.8.4) > MCA bcol: basesmuma (MCA v2.0, API v2.0, Component v1.8.4) > MCA bcol: ptpcoll (MCA v2.0, API v2.0, Component v1.8.4) > MCA bml: r2 (MCA v2.0, API v2.0, Component v1.8.4) > MCA btl: self (MCA v2.0, API v2.0, Component v1.8.4) > MCA btl: sm (MCA v2.0, API v2.0, Component v1.8.4) > MCA btl: tcp (MCA v2.0, API v2.0, Component v1.8.4) > MCA btl: vader (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: basic (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: hierarch (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: inter (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: libnbc (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: ml (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: self (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: sm (MCA v2.0, API v2.0, Component v1.8.4) > MCA coll: tuned (MCA v2.0, API v2.0, Component v1.8.4) > MCA dpm: orte (MCA v2.0, API v2.0, Component v1.8.4) > MCA fbtl: posix (MCA v2.0, API v2.0, Component v1.8.4) > MCA fcoll: dynamic (MCA v2.0, API v2.0, Component v1.8.4) > MCA fcoll: individual (MCA v2.0, API v2.0, Component v1.8.4) > MCA fcoll: static (MCA v2.0, API v2.0, Component v1.8.4) > MCA fcoll: two_phase (MCA v2.0, API v2.0, Component v1.8.4) > MCA fcoll: ylib (MCA v2.0, API v2.0, Component v1.8.4) > MCA fs: ufs (MCA v2.0, API v2.0, Component v1.8.4) > MCA io: ompio (MCA v2.0, API v2.0, Component v1.8.4) > MCA io: romio (MCA v2.0, API v2.0, Component v1.8.4) > MCA mpool: grdma (MCA v2.0, API v2.0, Component v1.8.4) > MCA mpool: sm (MCA v2.0, API v2.0, Component v1.8.4) > MCA osc: rdma (MCA v2.0, API v3.0, Component v1.8.4) > MCA osc: sm (MCA v2.0, API v3.0, Component v1.8.4) > MCA pml: v (MCA v2.0, API v2.0, Component v1.8.4) > MCA pml: bfo (MCA v2.0, API v2.0, Component v1.8.4) > MCA pml: cm (MCA v2.0, API v2.0, Component v1.8.4) > MCA pml: ob1 (MCA v2.0, API v2.0, Component v1.8.4) > MCA pubsub: orte (MCA v2.0, API v2.0, Component v1.8.4) > MCA rcache: vma (MCA v2.0, API v2.0, Component v1.8.4) > MCA rte: orte (MCA v2.0, API v2.0, Component v1.8.4) > MCA sbgp: basesmsocket (MCA v2.0, API v2.0, Component v1.8.4) > MCA sbgp: basesmuma (MCA v2.0, API v2.0, Component v1.8.4) > MCA sbgp: p2p (MCA v2.0, API v2.0, Component v1.8.4) > MCA sharedfp: individual (MCA v2.0, API v2.0, Component v1.8.4) > MCA sharedfp: lockedfile (MCA v2.0, API v2.0, Component v1.8.4) > MCA sharedfp: sm (MCA v2.0, API v2.0, Component v1.8.4) > MCA topo: basic (MCA v2.0, API v2.1, Component v1.8.4) > MCA vprotocol: pessimist (MCA v2.0, API v2.0, Component v1.8.4) > > > >