Re: [Boost-bugs] [Boost C++ Libraries] #9161: two definitions of future_object_base in v1.53 and 1.54

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9161: two definitions of future_object_base in v1.53 and 1.54
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-09-27 17:22:40


#9161: two definitions of future_object_base in v1.53 and 1.54
---------------------------------+----------------------------------
  Reporter: jennifer.l.jiang@… | Owner: viboes
      Type: Bugs | Status: reopened
 Milestone: To Be Determined | Component: thread
   Version: Boost 1.54.0 | Severity: Problem
Resolution: | Keywords: BOOST_THREAD_VERSION
---------------------------------+----------------------------------

Comment (by viboes):

 Replying to [comment:5 johnmaddock]:
> As the person who suggested Jennifer file a bug report here I feel I
 should try and clarify the issue (Jennifer works for Intel: her interest
 is in testing their compiler against Boost, but of course this uncovers
 bugs in Boost as well as their compiler).



> 1) In the headers I see things like:
>
> {{{
> #if defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
> typedef shared_ptr<shared_state_base> continuation_ptr_type;
> #else
> // This type shouldn't be included, but is included to
 maintain the same layout.
> typedef shared_ptr<void> continuation_ptr_type;
> #endif
> }}}
>
> So it appears that the intention is that the library should be binary
 compatible regards of the setting of BOOST_THREAD_VERSION? And yet that's
 clearly not the case - at least in the presence of IPO. At the very least
 this needs clearly documenting.

 I don't know what IPO is, but yes the intention was to have the same
 layout.

> 2) There are many tests which explicitly test version 3 or 4 features,
 but which still try and link against a library built with version 2.
 Again this won't work in the presence of IPO, and prevents the running of
 tests with IPO enabled (which is a good thing to test BTW). So IMO the
 Jamfile is broken - you should really build 3 versions of libboost_thread
 (for versions 2, 3 and 4) and link against the right one in each test.
 Clearly that's going to be tedious to fix, but I don't see how the current
 situation can be correct either (So it might actually be better to fix 1).
>
> Let me know if you need someone to run the tests with Intel C++.

 Could you replace


 {{{
 #if defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
             typedef shared_ptr<shared_state_base> continuation_ptr_type;
 #else
             // This type shouldn't be included, but is included to
 maintain the same layout.
             typedef shared_ptr<void> continuation_ptr_type;
 #endif
 }}}

 by


 {{{
             typedef shared_ptr<shared_state_base> continuation_ptr_type;
 }}}

 to see if just this fix the issue?

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9161#comment:6>
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:14 UTC