[ 
https://issues.apache.org/jira/browse/CB-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeffrey Willms updated CB-3927:
-------------------------------

    Attachment: 0001-Exec-bug-reproducing.patch

This patch allows the bug to be reproduced every time. It also adds a bunch of 
log messages. The bug can be seen in the logs when exec calls happen before 
onPageStarted occurred.
                
> Exec Can Fail to Issue Callback Immediately After onCordovaReady
> ----------------------------------------------------------------
>
>                 Key: CB-3927
>                 URL: https://issues.apache.org/jira/browse/CB-3927
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android, CordovaJS
>            Reporter: Jeffrey Willms
>            Assignee: Andrew Grieve
>         Attachments: 0001-Exec-bug-reproducing.patch
>
>
> If javascript issues an exec to native after waiting for onCordovaReady the 
> exec can possibly fail to issue any callback. The bug is caused when 
> CordovaWebViewClient.onPageStarted, which resets the NativeToJsMessageQueue, 
> is called between native queuing the response message and the javascript 
> polling for that response. While webView.loadUrl is called near the entry 
> point of the app, the onPageStarted event can happen very far in the future, 
> after cordova-ready.
> These are the order of events that typically need to happen for this bug to 
> manifest:
> - webView.loadUrl is called near entry point of app
> - At some point in the future after cordova-ready, exec is called by 
> javascript
> - Native handler processes exec but gets blocked before the response message 
> can be added to the queue because another thread is currently accessing the 
> queue
> - Native exec returns without response
> - Handler gets unblocked and adds the response message to the queue and 
> signals to javascript that there are messages to be read
> - CordovaWebViewClient.onPageStarted is called which resets the message queue 
> - javascript receives signal from native and polls for messages, but gets 
> none in response because the queue was reset
> The end result is that neither the success or failure callback of the exec 
> ever gets issued.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to