Bug 1169501

Summary: Missing symbol in libboost_mpi
Product: Red Hat Enterprise Linux 6 Reporter: Martyn Gigg <martyn.gigg>
Component: boostAssignee: Jonathan Wakely <jwakely>
Status: CLOSED ERRATA QA Contact: Miloš Prchlík <mprchlik>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.6CC: dkochuka, jherrman, martyn.gigg, mcermak, mnewsome, mprchlik, pbhoot, stuart
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
When compiling a C++ program using the Boost.MPI library, the compiling process previously failed to find the "boost::mpi::environment::environment(bool)" symbol and terminated with an "undefined reference" error. This update adds the missing symbol, and the described compiling process now successfully creates an executable.
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-07-22 06:00:07 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
A fix none

Description Martyn Gigg 2014-12-01 20:25:04 UTC
Description of problem: Compiling a C++ program using boost::mpi fails to find the symbol "boost::mpi::environment::environment(bool)" when linking


Version-Release number of selected component (if applicable): 1.41.0-25


How reproducible: Always


Steps to Reproduce:

1. Put the following into a file called stat_env.cpp
#include <boost/mpi/environment.hpp>

int main()
{
  using boost::mpi::environment;
  environment env(true);
}

2. Load the compat-mpi module with
  module load compat-openmpi-x86_64

3. Compile with
  g++ -I$MPI_INCLUDE -L/usr/lib64/openmpi/lib -lboost_mpi -o start_env start_env.cpp

Actual results:
/tmp/ccQU3mJK.o: In function `main':
start_env.cpp:(.text+0x15): undefined reference to `boost::mpi::environment::environment(bool)'
collect2: ld returned 1 exit status


Expected results:
An executable and no errors

Comment 3 Petr Machata 2015-01-13 20:34:04 UTC
Created attachment 979730 [details]
A fix

I think this should fix the problem.  I don't quite understand how the object got compiled in the first place, as you should have hit compilation error already.  But that, too, should go away with this patch.

Comment 4 Petr Machata 2015-01-13 20:58:39 UTC
Oh, or are you possibly compiling against compat-openmpi or some such?  Then boost would see MPI_VERSION of 2 and expose the symbol.  But the DSO's were still built against an openmpi with MPI_VERSION 3, hence the symbol wasn't included in the DSO.

Comment 5 Petr Machata 2015-01-13 21:12:03 UTC
Apologies, I didn't notice you mention compat-openmpi explicitly.  No further questions then.

Comment 13 Miloš Prchlík 2015-04-23 06:56:47 UTC
Verified for build boost-1.41.0-27.el6.

Comment 15 errata-xmlrpc 2015-07-22 06:00:07 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-1269.html