5071602c59
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> |
||
---|---|---|
.. | ||
c | ||
java | ||
Makefile.am | ||
README |
*************************************************************************** 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.