Bug 1427412

Summary: Exception from a virtual function does not get caught
Product: Red Hat Enterprise Linux 7 Reporter: Piyush Bhoot <pbhoot>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED ERRATA QA Contact: Michael Petlan <mpetlan>
Severity: high Docs Contact:
Priority: high    
Version: 7.3CC: mcermak, mpetlan, mpolacek
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: gcc-4.8.5-12.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-08-01 22:35:59 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:    
Bug Blocks: 1420851    

Description Piyush Bhoot 2017-02-28 06:57:58 UTC
Description of problem:
Exception from a virtual function does not get caught with 03 optimization

Version-Release number of selected component (if applicable):
 gcc-c++.x86_64 0:4.8.5-11.el7    

How reproducible:
Always

Steps to Reproduce:
1.

namespace {
struct IFoo { virtual void foo() = 0; };
struct IBar { virtual void bar() = 0; };

struct FooBar : private IBar, private IFoo
{
    void call_foo()
    {
        try
        {
            static_cast<IFoo*>(this)->foo();
        }
        catch( ... ) {}
    }
    void foo() { throw 1; }
    void bar()  {}
};

void test()
{
    FooBar foobar;
    foobar.call_foo();
}
}
int main()
{
    test();
    return 0;
}
2.
g++ -O3 -Wall -Wextra -pedantic main.cpp && ./a.out


Actual results:

terminate called after throwing an instance of 'int'

Expected results:
No errors

Additional info:

This is being regression upstream 4.8.5, 5.2.0, 5.3.0 as per upstream bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68184

Works with -O0 optimization.

Comment 7 Michael Petlan 2017-06-05 14:08:49 UTC
The related test passes on all architectures with gcc-4.8.5-16.el7.
VERIFIED.

Comment 8 errata-xmlrpc 2017-08-01 22:35:59 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.

https://access.redhat.com/errata/RHBA-2017:2094