On Apr 22, 2013, at 8:37 AM, Joe Mason <[email protected]> wrote:

> I'm trying to debug a deadlock on exit in a BlackBerry app that uses webkit 
> (which is pretty hard to reproduce, so I don't have a cut-down test case 
> yet). Right now my suspicions are on this behaviour:
> 
> a synchronous XMLHttpRequest starts loading (from a script running in the 
> main frame)
> ResourceHandle::platformLoadResourceSynchronously gets called
> On BlackBerry, this is implemented by creating a nested EventLoop and calling 
> loop.cycle()
> While in the nested event loop, BlackBerry::WebPage::stopLoading is called

There's your problem - loadResourceSynchronously is supposed to guarantee that 
- from WebCore's perspective - the main web thread is waiting on the resource 
load.

The nested event loop needs to be configured to *not* call back in to WebCore 
and *only* to service the load.

Note that this expectation re: sync XHR is why single-process, 
Web-thread-is-UI-thread browsers are expected to become completely non 
responsive during the sync XHR.

The proper way to allowing such an app to exit while a sync XHR is outstanding 
would be to cause the sync XHR load to fail at the networking layer *then* exit.

~Brady


> This is implemented by calling m_mainFrame->loader()->stopAllLoaders()
> 
> As far as I can see, FrameLoader::stopAllLoaders does NOT stop any 
> XMLHttpRequest started from this frame - it just stops the 
> provisionalDocumentLoader and documentLoader for the frame itself, and 
> recursively does the same for all subframes. Is that correct?
> 
> Is there a way to find and stop all synchronous requests associated with a 
> frame? (There should be only one...)
> 
> Thanks,
> Joe
> 
> ---------------------------------------------------------------------
> This transmission (including any attachments) may contain confidential 
> information, privileged material (including material protected by the 
> solicitor-client or other applicable privileges), or constitute non-public 
> information. Any use of this information by anyone other than the intended 
> recipient is prohibited. If you have received this transmission in error, 
> please immediately reply to the sender and delete this information from your 
> system. Use, dissemination, distribution, or reproduction of this 
> transmission by unintended recipients is not authorized and may be unlawful.
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> https://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to