[ https://issues.apache.org/jira/browse/CB-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13695481#comment-13695481 ]
ASF subversion and git services commented on CB-3927: ----------------------------------------------------- Commit fc67a36bf0559864fbd0ac48c7ef48e7fdeb52e6 in branch refs/heads/master from [~jbwillms] [ https://git-wip-us.apache.org/repos/asf?p=cordova-js.git;h=fc67a36 ] [android] CB-3927 Fix start-up race condition that could cause exec() responses to be dropped. (cherry picked from commit b02ec10bcee21a84f2568bb7615f835f38fc1662) > 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 > Fix For: 3.0.0 > > 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