RESOLVED FIXED 85138
Plugins are killed after 45 seconds if showing keychain "Allow/Deny" dialog
https://bugs.webkit.org/show_bug.cgi?id=85138
Summary Plugins are killed after 45 seconds if showing keychain "Allow/Deny" dialog
Rudi Sherry
Reported 2012-04-28 09:24:54 PDT
I'm developing a mac plugin for WebKit, and on occasion it wants to use the keychain. This might possibly bring up the keychain's Deny/Allow/Always-Allow dialog. I've noticed that if that is left up there for more than about 45 seconds, our plugin process is killed. This is evidently the "hang-detection" timeout. WebKit suspends the hang-timeout, allowing modal dialogs to stay up essentially forever, using a swizzled runModalForDialog: function; but the keychain dialog is actually a separate process, called within any of a very large number of low-level calls so it would be impractical to swizzle or override them. Is there a way Safari/WebKit can detect that the plugin process is waiting for a keychain dialog and suspend the hang-timeout? Right now I have our plug-in creating a 1x1 modal dialog around calls that could possibly show a keychain, but frankly I don't know how many calls we have that could do it or where they are (I'm working with a large body of inherited code). It would be best to detect the situation rather than try to prevent it. I can create a plug-in that does this if needed, but will wait for comments about the feasibility of this.
Attachments
Patch (31.65 KB, patch)
2012-10-03 16:42 PDT, Anders Carlsson
kling: review+
Alexey Proskuryakov
Comment 1 2012-04-30 11:37:55 PDT
This sounds closely related to bug 83829.
Rudi Sherry
Comment 2 2012-04-30 13:09:25 PDT
I don't think it's the same as bug 83829. In that one, our plugin is calling runModalWithDialog: which (in the webkit swizzling could) should trigger the hang-timeout suspension; I don't know why it does not. In this one, calls into the Mac OS X Security framework don't actually call runModalWithDialog. They communicate with a special-purpose process that deals with the keychain and shows that dialog (maybe for security reasons, since it's OS code I don't know). The plugin process is deep within the Security framework, on a mach wait.
Rudi Sherry
Comment 3 2012-05-08 06:43:33 PDT
Radar 11404931
Anders Carlsson
Comment 4 2012-10-03 16:41:12 PDT
*** Bug 98325 has been marked as a duplicate of this bug. ***
Anders Carlsson
Comment 5 2012-10-03 16:42:24 PDT
Anders Carlsson
Comment 6 2012-10-03 16:54:42 PDT
Note You need to log in before you can comment on or make changes to this bug.