Red Hat Bugzilla – Bug 166237
gcc generates bad exception handling code
Last modified: 2007-11-30 17:07:19 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050720 Fedora/1.0.6-1.1.fc3 Firefox/1.0.6
Description of problem:
gcc was invoked with the flags -Wno-ctor-dtor-privacy -m64 -w -pipe -fmessage-length=0 -O2 and generated bad exception handling code. Leaving off the -O2 results in correct code.
When the bad code is run and an exception is thrown, the code crashed as a result of calling free() with a bad value (0x01).
The bad assembler with a detailed analysis will be attached directly.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
At this stage, we don't have a useful repro that we can ship (cutting down the ~1,000,000 lines to something we can send will be a nontrivial task).
Created attachment 117862 [details]
Some notes showing the bad assembler.
I tried to reproduce this with a simple testcase, but did not manage to do that.
So a self-contained testcase is a must before we can make any progress on this.
Well, I've spent all day creating a stand-alone repro. The code I've got
(attached) isn't an executable, but if you examine the assembler it has the same
fault. The place to look for is the call to the C1::C1(...) constructor.
Created attachment 117898 [details]
A valid c++ source file that yields incorrect assembler.
Fixed in upstream CVS:
Brilliant. Is there an ETA for the patches to hit EL4?
In RHEL4 U3.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.