[Boost-bugs] [Boost C++ Libraries] #7558: MPI missing symbols using serialization's static library design

Subject: [Boost-bugs] [Boost C++ Libraries] #7558: MPI missing symbols using serialization's static library design
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-10-23 16:01:52


#7558: MPI missing symbols using serialization's static library design
------------------------------------------------+---------------------------
 Reporter: Brian Barrett <bwbarre@…> | Owner: dgregor
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: mpi
  Version: Boost 1.51.0 | Severity: Problem
 Keywords: |
------------------------------------------------+---------------------------
 On Mac OS X Lion, we're seeing errors when linking our application using
 Boost.MPI. The application is rather large and uses Boost.Serialization
 for both checkpoint/restart and MPI communication. The checkpoint/restart
 bits made serialization a bit of a disaster in terms of compile times (due
 to headers including basically every other header in the project). To
 solve that problem, we followed the Boost.Serialization advice on static
 libraries.

 On Lion (and possibly elsewhere, but definitely on Lion) using
 the gcc front-end (i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
 Apple Inc. build 5658) (LLVM build 2336.11.00)), we're seeing link
 failures due to serialization calls for MPI archivers not being found when
 compiling with -O2 or higher on Boost 1.50.0 and 1.51.0:

   CXXLD sst.x
 Undefined symbols for architecture x86_64:
   "void
 SST::Introspector::serialize<boost::mpi::packed_iarchive>(boost::mpi::packed_iarchive&,
 unsigned int)", referenced from:
       boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
 SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive
 &, void*, unsigned int) const in introspectedComponent.o
       boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
 SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive
 &, void*, unsigned int) consti n simulation.o

 While I could simply explicitly instantiate the missing archivers, that
 seems like a bad idea for something in the detail namespace and it appears
 that the list of archivers I'd need to instantiate has changed over time.
 The mailing list suggested that this sounded like a bug and that I should
 file a bug report.

 I've attached a test case that shows the problem. It's essentially the
 Boost.Serialization demo_pimpl example, but using MPI instead of a text
 archiver.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/7558>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:11 UTC