This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/8047: [i386] Stack corruption with exceptions
- From: Danny Smith <danny_r_smith_2001 at yahoo dot co dot nz>
- To: gcc-bugs at gcc dot gnu dot org
- Cc: bangerth at ticam dot utexas dot edu
- Date: Tue, 19 Nov 2002 10:17:53 +1100 (EST)
- Subject: Re: c++/8047: [i386] Stack corruption with exceptions
I have just tried this with i386-mingw32 (GCC3.3) with same result: Okay with
march=i686, stack exhaustion with i[345]86. However, if add
-maccumulate-ougoing-args, the stack is okay with default -march=i386
Ditto with cygwin
Coincidentally, in mingw and cygwin, functions that call a __stdcall function
(callee pops stack) show stack corruption with exceptions when compiled with
-fomit-frame-pointer, but are okay with -fomit-frame-pointer
-maccumulate-outgoing-args.
Also, perhaps related is PR6764, which still fails on mingw with --march=i386
but not with -march=i686 or -maccumulate-outgoing-args
Danny
Re: c++/8047: [i386] Stack corruption with exceptions
From: Wolfgang Bangerth <bangerth at ticam dot utexas dot edu>
To: gcc-gnats at gcc dot gnu dot org, <gcc-bugs at gcc dot gnu dot org>
Date: Fri, 15 Nov 2002 18:31:44 -0600 (CST)
Subject: Re: c++/8047: [i386] Stack corruption with exceptions
--------------------------------------------------------------------------------
I just looked at this report. A reduced testcase is this:
-----------------------------------
struct auto_ptr {
auto_ptr(int) { }
};
int foo() { throw 5; }
int main()
{
label:
try {
auto_ptr x(foo());
}
catch (...)
{
}
goto label;
}
----------------------------------
On closer examination, I believe this to be actually a stack corruption
bug, because if I put a breakpoint into the loop, I can see how the stack
pointer is decreased by 8 bytes in each iteration, which eventually leads
to the program running out of space. Note that this behavior requires that
you use -march=386, using i686 does not trigger the problem.
Regards
Wolfgang
http://careers.yahoo.com.au - Yahoo! Careers
- 1,000's of jobs waiting online for you!