This service will be undergoing maintenance at 00:00 UTC, 2017-10-23 It is expected to last about 30 minutes
Bug 885864 - boost-1.33.1-15 causes qpid-cpp build failure
boost-1.33.1-15 causes qpid-cpp build failure
Status: CLOSED UPSTREAM
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
2.3
Unspecified Unspecified
high Severity high
: ---
: ---
Assigned To: messaging-bugs
MRG Quality Engineering
: Patch
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-12-10 15:19 EST by mick
Modified: 2013-05-02 07:53 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-05-02 07:53:25 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description mick 2012-12-10 15:19:26 EST
Boost version boost-1.33.1-15 causes a spurious build failure at qpid/broker/QueuePolicy.cpp:222:





The warning message looks like this:
-----------------------------------------------------------

( Don't be scared -- just squint and scroll down as fast as you can. )

   g++ -DHAVE_CONFIG_H -I. -I. -I. -I../include -I../include -I. -I= -Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual -DQPID_LIBEXEC_DIR=\"/usr/local/libexec/qpid\" -DBOOST_FILESYSTEM_VERSION=2 -D_IN_QPID_BROKER -g -O2 -MT qpid/broker/libqpidbroker_la-RecoveredDequeue.lo -MD -MP -MF qpid/broker/.deps/libqpidbroker_la-RecoveredDequeue.Tpo -c qpid/broker/RecoveredDequeue.cpp  -fPIC -DPIC -o qpid/broker/.libs/libqpidbroker_la-RecoveredDequeue.o
   cc1plus: warnings being treated as errors
   /usr/include/boost/multi_index_container.hpp: In copy constructor 'boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::multi_index_container(const boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>&) [with Value = qpid::broker::QueuedMessage, IndexSpecifierList = boost::multi_index::indexed_by<boost::multi_index::sequenced<boost::multi_index::tag<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::member<qpid::broker::QueuedMessage, qpid::framing::SequenceNumber, &qpid::broker::QueuedMessage::position>, mpl_::na, mpl_::na, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, Allocator = std::allocator<qpid::broker::QueuedMessage>]':
   qpid/broker/QueuePolicy.cpp:222:   instantiated from here
   /usr/include/boost/multi_index_container.hpp:204: warning: base class 'struct boost::multi_index::detail::header_holder<boost::multi_index::detail::sequenced_index_node<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::index_node_base<qpid::broker::QueuedMessage> > >, boost::multi_index::multi_index_container<qpid::broker::QueuedMessage, boost::multi_index::indexed_by<boost::multi_index::sequenced<boost::multi_index::tag<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::member<qpid::broker::QueuedMessage, qpid::framing::SequenceNumber, &qpid::broker::QueuedMessage::position>, mpl_::na, mpl_::na, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<qpid::broker::QueuedMessage> > >' should be explicitly initialized in the copy constructor




The spurious warning message can be fixed by adding the following line after line 205 in the file   /usr/include/boost/multi_index_container.hpp

  bfm_header(),

So, when you are done, the code will look like this:

  multi_index_container(
    const multi_index_container<Value,IndexSpecifierList,Allocator>& x):
    bfm_allocator(x.bfm_allocator::member),
    bfm_header(),  // NEW LINE
    super(x),
    node_count(0)
  {



This change was made in the very next version of Boost.
Comment 2 Justin Ross 2012-12-11 15:15:18 EST
At this point, two of three data points indicate this is not general problem with 2.3 on rhel 5, so I'm moving it off of the 2.3 list.  We can bring it back in if we get more info.
Comment 3 mick 2012-12-13 15:16:22 EST
I am doing source-tree builds from git branches.
Vanilla RHEL-5 and vanilla RHEL-6

Here is what I see so far.

       Boost issue from multi_index_container.hpp
       qpid-cpp build failure.

                    RHEL-5  |  RHEL-6
       ---------+-----------+-----------
       0.18-mrg |    BAD    |   OK
       ---------+-----------+-----------
       0.20     |    OK     |   OK
       ---------+-----------+-----------
       trunk    |    OK     |   OK
       ---------+-----------+-----------



Note -- there is no problem on RHEL-6 for any branch because it has a newer version of Boost, and the issue has been fixed there.

But also there is no issue with 0.20 and beyond, because of the code reorganization that was done.  The file that triggered the problem no longer exists in 0.20 !

ALSO NOTE -- it is a compiler *warning* that I am seeing, but by our standard source-tree builds treat those as errors, and halt.
Comment 4 Justin Ross 2013-02-24 13:48:12 EST
Mick, where do we stand?

(In reply to comment #3)
> I am doing source-tree builds from git branches.
> Vanilla RHEL-5 and vanilla RHEL-6
> 
> Here is what I see so far.
> 
>        Boost issue from multi_index_container.hpp
>        qpid-cpp build failure.
> 
>                     RHEL-5  |  RHEL-6
>        ---------+-----------+-----------
>        0.18-mrg |    BAD    |   OK
>        ---------+-----------+-----------
>        0.20     |    OK     |   OK
>        ---------+-----------+-----------
>        trunk    |    OK     |   OK
>        ---------+-----------+-----------
> 
> 
> 
> Note -- there is no problem on RHEL-6 for any branch because it has a newer
> version of Boost, and the issue has been fixed there.
> 
> But also there is no issue with 0.20 and beyond, because of the code
> reorganization that was done.  The file that triggered the problem no longer
> exists in 0.20 !
> 
> ALSO NOTE -- it is a compiler *warning* that I am seeing, but by our
> standard source-tree builds treat those as errors, and halt.
Comment 5 mick 2013-05-02 05:17:14 EDT
I'm still seeing it.
I must be getting a different (older) version of boost
when I use Beaker to check out a RHEL5 system.
( see end of this comment )


here is what I do:
--------------------------

Brand-new RHEL 5.9 system, 
install git
git checkout origin/0.18-mrg
cd trunk/qpid/qpid/cpp
./bootstrap
./configure
make -j8



here is how my build fails
------------------------------

cc1plus: warnings being treated as errors
/usr/include/boost/multi_index_container.hpp: In copy constructor 'boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::multi_index_container(const boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>&) [with Value = qpid::broker::QueuedMessage, IndexSpecifierList = boost::multi_index::indexed_by<boost::multi_index::sequenced<boost::multi_index::tag<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::member<qpid::broker::QueuedMessage, qpid::framing::SequenceNumber, &qpid::broker::QueuedMessage::position>, mpl_::na, mpl_::na, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, Allocator = std::allocator<qpid::broker::QueuedMessage>]':
qpid/broker/QueuePolicy.cpp:222:   instantiated from here

----------------------------------------------------


Boost version, from /usr/include/boost/version.hpp, is  1_33_1


The fix mentioned in Comment 0 still works.
Comment 6 Justin Ross 2013-05-02 07:53:25 EDT
For this one, we're now concerned about Vienna/2.4/2.8, not 2.3 any longer.  Based on the table in comment 3, I think we can close this.  Please reopen if you think that's problematic.

-> CLOSED

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