lists.zerezo.com



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

***BOGO*** Re: [Mingw-users] Installation trouble with 4.3 Alpha



Hi Dave,

Dave Korn wrote:
> Aaron W. LaFramboise wrote on 08 June 2008 20:43:
> 
>> The main blocker, in case anyone is wondering, is trying to fix the
>> exception foreign frames issue, which has been a object of concern for
>> many people.
> 
>   How are you approaching this?  I looked on the GSoC page but couldn't find
> any description of the strategy.  (I could test patches on cygwin for you,
> if that would help any.)

Not very well. :)

Details of the various approaches I attempted will be forthcoming soon 
on the Wiki page, as I have not been able to reach a satisfactory 
solution here.

Presently, the unsatisfactory but serendipitous solution to this issue I 
am pursuing is adding partial SEH support to GCC, then adding special 
annotations to prototypes of functions we'd like to unwind through 
(specifically DispatchMessage()), and allow DW2 exceptions to land at 
these special SEH landing pads.

Sorry, I'm too busy trying to get everything on my short TODO list out 
(like the overdue MinGW release) to explain further at this time. :(


One side note: I've discovered that this is definitely invalid.  As part 
of the research I've done on this issue, I've found two separate places 
in official Microsoft documentation that states throwing through foreign 
frames is not valid.  Additionally, on at least one implementation of 
Windows (older WinCE on Palm), exceptions don't even propagate through 
DispatchMessage()).

As another data point, other DW2 targets do not allow this sort of 
unwinding through foreign frames.

This is in addition to the obvious reason that this is invalid: it 
asynchronously blows away frames that weren't expecting to be blown away.

For this reason, and the fact that this is holding up other things, I 
believe I'll be proceeding without this.  We'll fix it for 
DispatchMessage(), call it a special MinGW extension, and give 
instructions on how to do it on other functions 'at your own risk.'  A 
general solution will not happen, because this is probably impossible in 
the general case, and this is probably a good thing, for the above reasons.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
MinGW-users mailing list
MinGW-users@xxxxxxxxxxxxxxxxxxxxx

You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users