In an abort situation, just bail out immediately -- don't try to
invoke any atexit()/on_exit()-registered functions.
This is similar rationale to
open-mpi/ompi@17846411c3.
There is currently a path through the grdma mpool and vma rcache that
leads to deadlock. It happens during the rcache insert. Before the
insert the rcache mutex is locked. During the call a new vma item is
allocated and then inserted into the rcache tree. The allocation
currently goes through the malloc hooks which may (and does) call back
into the mpool if the ptmalloc heap needs to be reallocated. This
callback tries to lock the rcache mutex which leads to the
deadlock. This has been observed with multi-threaded tests and the
openib btl.
This change may lead to some minor slowdown in the rcache vma when
threading is enabled. This will only affect larger message paths in
some of the btls.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
This new class is the same as the opal_mutex_t class but has a
different constructor. This constructor adds the recursive flag to the
mutex attributes for the lock. This class can be used where there may
be re-enty into the lock from within the same thread.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
WRAPPER_EXTRA_LDFLAGS is both no longer used, and even if we fixed to
use the new names (i.e., <PACKAGE>_WRAPPER_EXTRA_LDFLAGS), it contains
a token that will not be understandable in Makefile.ams: @{libdir}.
Hence, update all instances to use <PACKAGE>_PKG_CONFIG_LDFLAGS, which
does not contain the @{libdir} token. See comment in
opal_setup_wrappers.m4 for an explanation.
Only set OMPI_FORTRAN_BUILD_SIZEOF to 1 if $ompi_fortran_happy is also
1 (i.e., we're building the Fortran interface). This prevents
building [p]size_f.f90 and trying to compile it if there is no Fortran
compiler, for example.
These man pages to OpenSHMEM API are received from openshmem.org
and ported with minimum modifications.
Thanks Tony Curtis for sharing man files.
Signed-off-by: Igor Ivanov <Igor.Ivanov@itseez.com>
There were several issues preventing the openib btl from running in
thread multiple mode:
- Missing locks in UDCM when generating a loopback endpoint. Fixed in
open-mpi/ompi@8205d79819.
- Incorrect sequence numbers generated in debug mode. This did not
prevent the openib btl from running but instead produced incorrect
error messages in debug builds.
- Recursive locking of the rcache lock caused by the malloc
hooks. This is fixed by open-mpi/ompi#827
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
When using eager RDMA in debug builds the openib btl generates a
sequence number for each send. The code independently updated the head
index and the sequence number for the eager rdma transaction. If
multiple threads enter this code at the same time and run in the
following order:
thread 1: update sequence (0 -> 1)
thread 2: update sequence (1 -> 2)
thread 2: update head (0 -> 1)
thread 1: update head (1 -> 2)
the sequence number for head[0] gets 1 and the sequence number for
head[1] gets 0. The fix is to generate the sequence number from the
head index.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Do not need to test with -f. If directories ever show up in git
ls-files (unlikely) their mime type is application/x-directory which
will fail the test ${file::4} == text check.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Ensure to define ompi/pompi versions for platforms that don't have
weak symbols. Also make fortran/mpif-h/profile build a separate
sizeof library, just like fortran/mpifh-h does.
I borked my $HOME/.gitconfig for a few commits, resulting in several
commits on Aug 20, 2015 being authored by "--quiet <--quiet>". This
.mailmap entry will correctly list those commits as being mine when
you use "git shortlog" or "git log --use-mailmap".
Per http://www.open-mpi.org/community/lists/devel/2015/08/17775.php,
some compilers don't like it when there's a .f90 file that only
contains comments (and no actual Fortran code). So if OMPI determines
that the Fortran compiler does not support enough Fortran mojo to
support MPI_SIZEOF, generate at least one dummy Fortran subroutine
that can be compiled in an otherwise barren Fortran landscape that is
devoid of life and hope.