Bug 921792

Summary: boost exceptions broken on RHEL 6.4 ("looser throw specifier")
Product: Red Hat Enterprise Linux 6 Reporter: Ben Webb <benmwebb>
Component: boostAssignee: Petr Machata <pmachata>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: dgregor, douglas, matt-rhbugzilla, mnewsome, pmachata, redhat-bugzilla, roysjosh, scott
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-04-02 09:40:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1000337, 1037680    
Bug Blocks:    

Description Ben Webb 2013-03-14 23:14:40 UTC
Description of problem:
Any C++ code that tries to use Boost exceptions fails to compile in RHEL 6.4. The same code works fine in RHEL 6.3.

Version-Release number of selected component (if applicable):
boost-1.41.0-11.el6_1.2.x86_64

How reproducible:
Always

Steps to Reproduce:
1. Create a simple test.cpp containing just the single line
#include <boost/exception/all.hpp>

2. Try to compile with
g++ -Wall -c test.cpp
  
Actual results:
Compilation fails with
In file included from /usr/include/boost/exception/all.hpp:24,
                 from test.cpp:1:
/usr/include/boost/exception_ptr.hpp:43: error: looser throw specifier for ‘virtual boost::exception_ptr::~exception_ptr()’
/usr/include/boost/exception/detail/exception_ptr_base.hpp:26: error:   overriding ‘virtual boost::exception_detail::exception_ptr_base::~exception_ptr_base() throw ()’

Expected results:
Compilation succeeds.

Additional info:
This looks to be the same as the bug that was reported against the EPEL boost141 package with RHEL 5.9 (bug #894072). Applying the changeset attached to that bug report fixes the problem for me.

Comment 2 Petr Machata 2013-03-15 11:44:26 UTC

*** This bug has been marked as a duplicate of bug 908774 ***

Comment 3 Petr Machata 2013-03-15 11:46:35 UTC
Apologies, 908774 isn't publicly accessible, let's track this separately.

Comment 4 Douglas Hubler 2013-03-19 11:32:15 UTC
I hope this issue is resolved quickly, we're stuck with this issue as well. 

 http://www.sipfoundry.org/forum/-/message_boards/message/1376527


What triggered this AFAIU is a gcc update.  I'm surprised there was update to gcc on what is otherwise meant to be a stable OS.

Comment 5 Petr Machata 2013-04-02 09:40:03 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.

http://rhn.redhat.com/errata/RHBA-2013-0692.html

Comment 6 Scott Dial 2013-08-19 18:56:52 UTC
I have a x86_64 install of EL6, and "yum install boost-devel.i686" fails due to a mismatch in the versions of boost. It seems like the 1.41.0-17.el6_4.i686 RPMs were not added to the x86_64 repositories correctly. Some are present, but not all. Am I missing something here?

Comment 7 Petr Machata 2013-08-19 19:27:25 UTC
Do you have an i686 static library installed?  I wouldn't be entirely surprised if that was the cause.  In any case, can you post the conflict message that you are getting?

Comment 8 Scott Dial 2013-08-19 23:33:15 UTC
# rpm -qa | grep boost
boost-system-1.41.0-17.el6_4.x86_64
boost-wave-1.41.0-17.el6_4.x86_64
boost-iostreams-1.41.0-17.el6_4.x86_64
boost-filesystem-1.41.0-17.el6_4.x86_64
boost-date-time-1.41.0-17.el6_4.x86_64
boost-serialization-1.41.0-17.el6_4.x86_64
boost-python-1.41.0-17.el6_4.x86_64
boost-regex-1.41.0-17.el6_4.x86_64
boost-signals-1.41.0-17.el6_4.x86_64
boost-test-1.41.0-17.el6_4.x86_64
boost-devel-1.41.0-17.el6_4.x86_64
boost-thread-1.41.0-17.el6_4.x86_64
boost-program-options-1.41.0-17.el6_4.x86_64
boost-graph-1.41.0-17.el6_4.x86_64
boost-1.41.0-17.el6_4.x86_64
# yum install boost-devel.i686
...
Error: Package: boost-devel-1.41.0-11.el6.i686 (rhel-x86_64-workstation-6)
           Requires: boost = 1.41.0-11.el6
           Installed: boost-1.41.0-17.el6_4.x86_64 (@rhel-x86_64-workstation-6)
               boost = 1.41.0-17.el6_4
           Available: boost-1.41.0-11.el6.x86_64 (rhel-x86_64-workstation-6)
               boost = 1.41.0-11.el6
           Available: boost-1.41.0-11.el6_1.2.x86_64 (rhel-x86_64-workstation-6)
               boost = 1.41.0-11.el6_1.2
           Available: boost-1.41.0-15.el6_4.x86_64 (rhel-x86_64-workstation-6)
               boost = 1.41.0-15.el6_4
# yum shell
> remove boost*
> install boost-devel.i686
> run
...
Error: Package: boost-devel-1.41.0-11.el6.i686 (rhel-x86_64-workstation-6)
    Requires: boost = 1.41.0-11.el6
    Removing: boost-1.41.0-17.el6_4.x86_64 (@rhel-x86_64-workstation-6)
        boost = 1.41.0-17.el6_4
    Available: boost-1.41.0-11.el6.x86_64 (rhel-x86_64-workstation-6)
        boost = 1.41.0-11.el6
    Available: boost-1.41.0-11.el6_1.2.x86_64 (rhel-x86_64-workstation-6)
        boost = 1.41.0-11.el6_1.2
    Available: boost-1.41.0-15.el6_4.x86_64 (rhel-x86_64-workstation-6)
        boost = 1.41.0-15.el6_4

# yum list --showduplicates boost-devel.i686
Available Packages
boost-devel.i686             1.41.0-11.el6             rhel-x86_64-workstation-6

If I walk over to a RHEL 6 i686 install, and do the same search:

# yum list --showduplicates boost-devel.i686
Installed Packages
boost-devel.i686           1.41.0-17.el6_4              @rhel-i386-workstation-6
Available Packages
boost-devel.i686           1.41.0-11.el6                rhel-i386-workstation-6
boost-devel.i686           1.41.0-11.el6_1.2            rhel-i386-workstation-6
boost-devel.i686           1.41.0-15.el6_4              rhel-i386-workstation-6
boost-devel.i686           1.41.0-17.el6_4              rhel-i386-workstation-6

It would seem that these RPMs should be in the x86_64 repo. My company reposync's the RHEL repos for local mirrors and I can verify that there is not nor has there ever been (we never delete RPMs so that we have backups for everything):

# ls boost-devel*.i686.rpm
boost-devel-1.41.0-11.el6.i686.rpm

Strange, yes?

Comment 9 Petr Machata 2013-08-20 10:11:59 UTC
This looks like a release engineering issue.  It is possible that we don't provide secondary-arch devel packages (they would still be in the base collection, if the decision to drop the support was made later).  I'm moving this problem to RCM in hope they can shed some light on this.

Comment 11 Scott Dial 2013-08-22 23:52:36 UTC
Except that you are providing an old secondary-arch devel package for boost-devel. You can see above that the confusing conflicts are the result of the only boost-devel.i686 package available being boost-devel-1.41.0-11.el6.i686, which has a hard dependency on boost = 1.41.0-11.el6. So, the upgrade path was broken, which is why I came here confused, because I knew 1.41.0-17.el6_4 was supposed to solve my problem.

I am confused why the i386 isn't strictly a subset of the x86_64 repo. I find that confusing and startling that it's possible for it to not be. In particular, because I don't see how I can subscribe a RHEL 6 development machine to the i386 channels to fill in the gaps that are missing, in order to cross-compile.

Comment 12 Scott Dial 2013-08-23 00:56:36 UTC
To add more info here: even if boost-devel.i686 was available, it requires boost-python.i686. boost-python.i686 will drag in python-libs.i686, which is an old version too:

# yum list --showduplicates python-libs.i686
Available Packages
python-libs.i686            2.6.5-3.el6                rhel-x86_64-workstation-6
python-libs.i686            2.6.5-3.el6_0.2            rhel-x86_64-workstation-6

Trying to install python-libs-2.6.5-3.el6 causes a version conflict for Python.

I double-checked this stuff on Sceintific Linux 6, and this all just works there (although they are some versions behind). I don't understand this.

I'm working around this at my company by putting these i386 packages into our Yum repo for x86_64, but that's ugly and it makes me unhappy.

Comment 13 Petr Machata 2013-08-23 08:53:24 UTC
I'm flipping this back to boost.  Let's track your issue in a separate bug 1000337.