[ 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