This is the mail archive of the cygwin-developers@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: longjmp problem


Vadim Egorov <egorovv@1c.ru> writes:
> 
> After digging around this problem I think that it concerns win32 SEH 
> mechanics. Following code shows the mutations of SEH frame 
> list while signals caused by exceptions are processed.

I suspect the same, but you're much further along than I am. I believe
we have to start mucking with SEH to get things to work correctly, and
the best source of information I've found so far is Pietrek's '97 article
MSJ "A Crash Course on the Depths of Win32 Structured Exception Handling"
that describes the except_handler crap in somewhat gory detail.

> before longjmp is enough but in general case when other seh frames 
> can be involved the task is more complicated.
> I think SEH unwinding should be performed in longjump based on 
> target esp value.

And it gets worse when you're dealing with C++ exceptions on x86-win32, 
which currently uses setjmp/longjmp. 

> I would be grateful to here any comments about my conclusions
> before I try to invent a fix for it.

You seem to be ahead of everyone here, so please go forth and do invent! 

We really need someone who knows SEH inside out (from a compiler
perspective, not win32 API perspective). I have get most of the code
out of Pietrek's article, but I lack the expertise in x86 to do anything
more with it.

Regards,
Mumit


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]