Bug 1169501 - Missing symbol in libboost_mpi
Summary: Missing symbol in libboost_mpi
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: boost
Version: 6.6
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: rc
: ---
Assignee: Jonathan Wakely
QA Contact: Miloš Prchlík
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-12-01 20:25 UTC by Martyn Gigg
Modified: 2019-07-11 08:24 UTC (History)
8 users (show)

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.
Clone Of:
Environment:
Last Closed: 2015-07-22 06:00:07 UTC


Attachments (Terms of Use)
A fix (613 bytes, patch)
2015-01-13 20:34 UTC, Petr Machata
no flags Details | Diff


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:1269 normal SHIPPED_LIVE boost bug update 2015-07-20 17:49:29 UTC

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


Note You need to log in before you can comment on or make changes to this bug.