[ 
https://issues.apache.org/jira/browse/CB-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13692040#comment-13692040
 ] 

ASF subversion and git services commented on CB-3927:
-----------------------------------------------------

Commit 16e08384c084db071193dffb8f1761b7f0c1cdb8 in branch refs/heads/3.0.0 from 
[~jbwillms]
[ https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;h=16e0838 ]

[CB-3927] Fix start-up race condition that could cause exec() responses to be 
dropped.

Requires a change to the JS as well.
(cherry picked from commit 9cb14838e8554ed2d28d317b37f76685fa76432e)

                
> 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