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