Skip to content

Crash with Open MPI 4.1.0 on macOS, but not 4.0.5: Symbol not found: _preadv #8350

Open
@mathomp4

Description

@mathomp4

Background information

What version of Open MPI are you using? (e.g., v3.0.5, v4.0.2, git branch name and hash, etc.)

I am using v4.0.5 and v4.1.0 for this.

Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)

In each case, the stack was built with GCC 10.2.0 built from scratch. I then used the release tarballs from Open MPI. The configure line for each is:

$ ./configure --disable-wrapper-rpath --disable-wrapper-runpath \
CC=gcc CXX=g++ FC=gfortran \
--prefix=$HOME/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.0.5

where only the last "4.0.5" is changed to "4.1.0" for 4.1.0.

Please describe the system on which you are running

  • Operating system/version: macOS 10.15.7
  • Computer hardware: Intel MacBook Pro 2019
  • Network type: Uh...internal? It's not a cluster, just a laptop running with ye olde --oversubscribe

Details of the problem

I'm still trying to see if I can figure out a reproducer for this (Hello World works just fine). But I want to try and describe the issue.

I help maintain an earth system model and we like to have the ability to run on a local laptop instead of our usual supercomputers for ease of development, etc. So, on my laptop, I build GCC and Open MPI by hand to have better control. I then build some base libraries and then the model.

In this case, everything is identical except for the Open MPI version. In every case a 4.0.5 becomes a 4.1.0. With 4.0.5, the model runs just fine:

...
 Character Resource Parameter: RATS_PROVIDER:PCHEM
 Character Resource Parameter: pchem_clim:species.data
 Integer*4 Resource Parameter: pchem_clim_years:39
 GOCART::Initialize_: Starting...

 Real*4 Resource Parameter: GOCART_DT:900.000000
 Integer*4 Resource Parameter: GOCART_REFERENCE_TIME:-999
 Character Resource Parameter: GOCART_IMPORT_RESTART_FILE:gocart_import_rst
 Bootstrapping gocart_import_rst
...

But when I move to 4.1.0, I get this:

...
 Character Resource Parameter: RATS_PROVIDER:PCHEM
 Character Resource Parameter: pchem_clim:species.data
 Integer*4 Resource Parameter: pchem_clim_years:39
dyld: lazy symbol binding failed: Symbol not found: _preadv
  Referenced from: /Users/mathomp4/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.1.0/lib/openmpi/mca_fbtl_posix.so
  Expected in: flat namespace

dyld: Symbol not found: _preadv
  Referenced from: /Users/mathomp4/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.1.0/lib/openmpi/mca_fbtl_posix.so
  Expected in: flat namespace


Program received signal SIGABRT: Process abort signal.

Backtrace for this error:
#0  0x12c983d3d
#1  0x12c98316d
#2  0x7fff6a9055fc

As an additional test, I built our model with Intel Fortran/Clang + Open MPI 4.1.0, and the model runs.I notice in the config.log files for 4.1.0:

rg ac_cv_func_preadv *.log
config.gcc-gfortran-10.2.0.log
188849:ac_cv_func_preadv=yes

config.intel-clang-2020.4.301.log
188184:ac_cv_func_preadv=no

So GNU has preadv, but Intel-Clang does not?

Now, I did a bit of diffing between 4.0.5 and 4.1.0 and I do see changes in files with the word preadv like ompi/mca/fbtl/posix/fbtl_posix_preadv.c. Indeed, a big change! But...maybe that doesn't matter?

Any help would be much appreciated.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions