RESOLVED FIXED Bug 45779
Exceptions are getting ignored on 64-bit Windows in the Web Process
https://bugs.webkit.org/show_bug.cgi?id=45779
Summary Exceptions are getting ignored on 64-bit Windows in the Web Process
Jessie Berlin
Reported 2010-09-14 13:45:25 PDT
We should clear the PROCESS_CALLBACK_FILTER_ENABLED flag. Right now, it is not cleared, so exceptions thrown in callback routines are ignored, allowing the Web Process to enter into an inconsistent state and possibly resulting in a different exception. In order to make this effective, hotfix 976038 (http://support.microsoft.com/kb/976038) will need to be installed on the 64 bit machines in question, so we should add that information to the tools.html page as well.
Attachments
Clear the PROCESS_CALLBACK_FILTER_ENABLED flag (4.38 KB, patch)
2010-09-14 14:01 PDT, Jessie Berlin
no flags
Jessie Berlin
Comment 1 2010-09-14 14:01:05 PDT
Created attachment 67602 [details] Clear the PROCESS_CALLBACK_FILTER_ENABLED flag
Adam Roben (:aroben)
Comment 2 2010-09-14 14:15:29 PDT
Comment on attachment 67602 [details] Clear the PROCESS_CALLBACK_FILTER_ENABLED flag View in context: https://bugs.webkit.org/attachment.cgi?id=67602&action=prettypatch > WebKit2/WebProcess/WebKitMain.cpp:82 > +static void disableProcessCallbackFilterForExceptions() I think disableUserModeCallbackExceptionFilter would be a clearer name. > WebKit2/WebProcess/WebKitMain.cpp:84 > + DWORD dwFlags; You should move this declaration to just before it's used. > WebKit2/WebProcess/WebKitMain.cpp:104 > + setPolicyPtr(dwFlags & ~0x1); I think you should make a named constant for 0x1. It would probably be useful to link to <http://blog.paulbetts.org/index.php/2010/07/20/the-case-of-the-disappearing-onload-exception-user-mode-callback-exceptions-in-x64/>, at least in your ChangeLog. > WebKitSite/building/tools.html:63 > +<li><p>Optional: Hotfix for 64-bit Windows to disable the process callback filter for exceptions</p> I'd say "user-mode" instead of "process" here. r=me
Jessie Berlin
Comment 3 2010-09-14 14:34:13 PDT
(In reply to comment #2) > (From update of attachment 67602 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=67602&action=prettypatch > > > WebKit2/WebProcess/WebKitMain.cpp:82 > > +static void disableProcessCallbackFilterForExceptions() > I think disableUserModeCallbackExceptionFilter would be a clearer name. Changed. > > > WebKit2/WebProcess/WebKitMain.cpp:84 > > + DWORD dwFlags; > You should move this declaration to just before it's used. Moved to right above the if statement. > > > WebKit2/WebProcess/WebKitMain.cpp:104 > > + setPolicyPtr(dwFlags & ~0x1); > I think you should make a named constant for 0x1. Added a #define PROCESS_CALLBACK_FILTER_ENABLED 0x1 closer to the top of the file so that it matches the documentation. > > It would probably be useful to link to <http://blog.paulbetts.org/index.php/2010/07/20/the-case-of-the-disappearing-onload-exception-user-mode-callback-exceptions-in-x64/>, at least in your ChangeLog. > Put it both in the ChangeLog and in the comment in the function. > > WebKitSite/building/tools.html:63 > > +<li><p>Optional: Hotfix for 64-bit Windows to disable the process callback filter for exceptions</p> > I'd say "user-mode" instead of "process" here. Changed. > > r=me Thanks!
Jessie Berlin
Comment 4 2010-09-14 15:04:21 PDT
Comment on attachment 67602 [details] Clear the PROCESS_CALLBACK_FILTER_ENABLED flag Committed in r67501 http://trac.webkit.org/changeset/67501
Note You need to log in before you can comment on or make changes to this bug.