Re : Strange prolog function issue

Emmanuel Astier <[email protected]> Tue, 25 Jul 2006 23:12:40 +0000 (GMT)
Newsgroups gmane.games.devel.windows
Message-ID <[email protected]>
Hi, 
 
It only happens in release build. And as you said, I suspect a compiler bug.
 
Actually, I don't understand when the compiler decide to switch to a different prolog for the function, where ebp doesn't have the same meaning.
It is all fine as the function code knows the different ebp meaning, and has no trouble accessing local vars, but the exception handler seems not to be aware of the change in the ebp meaning.
 
Thanks for your help, 
we send a mail to microsoft, we will wait for their anwser...
 
Emmanuel

Ps : Kent, replying to your mails only replies to you, not to the list... 

----- Message d'origine ----
De : Kent Quirk <[email protected]>
À : Emmanuel Astier <[email protected]>; Game Development for MS Windows <[email protected]>
Envoyé le : Mardi, 25 Juillet 2006, 6h09mn 40s
Objet : Re: [GD-Windows] Strange prolog function issue


Emmanuel Astier wrote:
> Hi all, 
>  
>  
> I have here a very strange issue.
>  
> We have a function using a local std::string, exceptions, and a alloca.
>  
> When the exception is thrown, the unwind mecanism tries to delete the std::string, but it deletes it at a wrong address( there is a 0x590 offset ).
>  
> <snip> 
>  
> I could not reproduce this ebp offset that makes the exception handler fail in a small sample. 
> So do you know in which case the compiler does not put esp in ebp, but put an offset in it ?
> And do you know how to fix it ( other than what we're doing : stopping using alloca with exceptions ), if it is a kind a known issue ? 
>   

Does the bug occur in both debug and release builds? Have you tried 
setting the optimization manually for that file?  In any large project, 
I usually find a couple of files that drive some form of compiler bug 
under full optimization, and I have to manually turn down the 
optimization on that particular file or do some sort of special (heavily 
commented!) adaptation, such as moving a function's location in the 
source file, or in the header file. You might also try playing with a 
couple of exception-related compiler switches. Compilers are complicated 
beasts, and any project of a significant size is likely to drive a bug 
or two.

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Gamedevlists-windows mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_id=555