[Bug 30572] Multiple applications need vectored continue handler support (.NET 3.x/4.x/Silverlight, Lync from Office 2013)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Nov 8 02:14:38 CST 2014


https://bugs.winehq.org/show_bug.cgi?id=30572

--- Comment #8 from Sebastian Lackner <sebastian at fds-team.de> ---
@Austin: The stub for RemoveVectoredContinueHandler is wrong, the function
takes only one argument, and returns an ULONG instead of a PVOID.

A fixed version was added to the staging tree and works well with Silverlight
(which detects at runtime if the function is present, and also works well
without it):

https://github.com/wine-compholio/wine-staging/blob/master/patches/ntdll-Vectored_Continue_Handler/0001-ntdll-Add-stubs-for-vectored-continue-handler.patch

If some applications refuse to work when AddVectoredContinueHandler returns
NULL - it is also safe to return some dummy value like (void *)0xdeadbeef, and
let RemoveVectoredContinueHandler return TRUE. The structure is undocumented
and its unlikely that any app tries to mess directly with the content.

Some technical details:

On Windows the exception handlers are executed in the following order:
* vectored exception handlers
* frame based exception handlers
* unhandled exception handler
* vectored continue handlers (<- at least if some documents are right, I was
unable to verify that)

This implies that vectored continue handlers are only used for error reporting,
as already described in Fochts description of this bug report. On some Windows
systems (including all testbot VMs?!) they also seem to be just stubs - instead
of running vectored continue handlers the test crashes. I looked at
implementing these functions some time ago, and even wrote some tests, which I
will attach here for reference. Nevertheless, those tests don't seem to work as
expected, and are basically useless when we also allow "broken" behaviour.
Maybe it depends on some Windows settings which error reporting tool is
executed?

By the way: Implementing in Wine would be relatively difficult because the
unhandled exception handler stuff is in kernel32.dll, but vectored continue
handlers are in ntdll.dll. I didn't find any documentation on how native
Windows deals with that? Should unhandled exception filter stuff be moved to
ntdll? Is there some undocumented export which can be used to execute continue
handlers?

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list