1
1
openmpi/ompi/mpi/java
Jeff Squyres 5071602c59 PSM/PSM2: Disable signal handler hijacking by default
Per discussion on https://github.com/open-mpi/ompi/pull/1767 (and some
subsequent phone calls and off-issue email discussions), the PSM
library is hijacking signal handlers by default.  Specifically: unless
the environment variables `IPATH_NO_BACKTRACE=1` (for PSM / Intel
TrueScale) is set, the library constructor for this library will
hijack various signal handlers for the purpose of invoking its own
error reporting mechanisms.

This may be a bit *surprising*, but is not a *problem*, per se.  The
real problem is that older versions of at least the PSM library do not
unregister these signal handlers upon being unloaded from memory.
Hence, a segv can actually result in a double segv (i.e., the original
segv and then another segv when the now-non-existent signal handler is
invoked).

This PSM signal hijacking subverts Open MPI's own signal reporting
mechanism, which may be a bit surprising for some users (particularly
those who do not have Intel TrueScale).  As such, we disable it by
default so that Open MPI's own error-reporting mechanisms are used.

Additionally, there is a typo in the library destructor for the PSM2
library that may cause problems in the unloading of its signal
handlers.  This problem can be avoided by setting `HFI_NO_BACKTRACE=1`
(for PSM2 / Intel OmniPath).

This is further compounded by the fact that the PSM / PSM2 libraries
can be loaded by the OFI MTL and the usNIC BTL (because they are
loaded by libfabric), even when there is no Intel networking hardware
present.  Having the PSM/PSM2 libraries behave this way when no Intel
hardware is present is clearly undesirable (and is likely to be fixed
in future releases of the PSM/PSM2 libraries).

This commit sets the following two environment variables to disable
this behavior from the PSM/PSM2 libraries (if they are not already
set):

* IPATH_NO_BACKTRACE=1
* HFI_NO_BACKTRACE=1

If the user has set these variables before invoking Open MPI, we will
not override their values (i.e., their preferences will be honored).

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2016-06-14 11:45:23 -07:00
..
c PSM/PSM2: Disable signal handler hijacking by default 2016-06-14 11:45:23 -07:00
java periodic whitespace purge 2015-08-24 09:32:33 -06:00
Makefile.am Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
README Purge whitespace from the repo 2015-06-23 20:59:57 -07:00

***************************************************************************

Note about the Open MPI Java bindings

The Java bindings in this directory are not part of the MPI specification,
as noted in the README.JAVA.txt file in the root directory. That file also
contains some information regarding the installation and use of the Java
bindings. Further details can be found in the paper [1].

We originally took the code from the mpiJava project [2] as starting point
for our developments, but we have pretty much rewritten 100% of it. The
original copyrights and license terms of mpiJava are listed below.

 [1] O. Vega-Gisbert, J. E. Roman, and J. M. Squyres. "Design and
     implementation of Java bindings in Open MPI". In preparation
     (2013).

 [2] M. Baker et al. "mpiJava: An object-oriented Java interface to
     MPI". In Parallel and Distributed Processing, LNCS vol. 1586,
     pp. 748-762, Springer (1999).

***************************************************************************

            mpiJava - A Java Interface to MPI
            ---------------------------------
                    Copyright 2003

        Bryan Carpenter, Sung Hoon Ko, Sang Boem Lim
        Pervasive Technology Labs, Indiana University
        email {shko,slim,dbc}@grids.ucs.indiana.edu

                       Xinying Li
                   Syracuse University

                       Mark Baker
             CSM, University of Portsmouth
             email mark.baker@computer.org

      (Bugfixes/Additions, CMake based configure/build)
                      Blasius Czink
               HLRS, University of Stuttgart

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.