You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Ralf Kistner (JIRA)" <ji...@apache.org> on 2016/02/22 17:51:18 UTC
[jira] [Created] (CB-10666) Native callbacks executing in the
middle of other JS functions
Ralf Kistner created CB-10666:
---------------------------------
Summary: Native callbacks executing in the middle of other JS functions
Key: CB-10666
URL: https://issues.apache.org/jira/browse/CB-10666
Project: Apache Cordova
Issue Type: Bug
Components: iOS
Reporter: Ralf Kistner
In some cases, the native callback seems to happen in the middle of another JS call. Simplified stack trace:
{code}
succeeded@/plugins/io.litehelpers.cordova.sqlcipher/www/SQLitePlugin.js:471:19
handleStatementSuccess@/plugins/io.litehelpers.cordova.sqlcipher/www/SQLitePlugin.js:346:12
/plugins/io.litehelpers.cordova.sqlcipher/www/SQLitePlugin.js:371:38
mycb@/plugins/io.litehelpers.cordova.sqlcipher/www/SQLitePlugin.js:417:20
callbackFromNative@/cordova.js:293:63
/cordova.js:1109:35
nativeEvalAndFetch@/cordova.js:1117:13
nativeCallback@/cordova.js:1106:38
global code@/myindex.html:1:47
removeChild@[native code]
remove@/myscript.js:5506:33
{code}
Often it's not an issue, but in some cases it causes really unexpected behaviour, and can cause the application to malfunction in ways that are hard to debug. See similar issue previously reported for Android: https://issues.apache.org/jira/browse/CB-6181
This happens especially when using a plugin such as SQLite/SQLCipher, which triggers a large number of native callbacks.
There does appear to be some code to handle this case - I'm not sure why it's not working here:
https://github.com/apache/cordova-ios/blob/9513bc6/CordovaLib/Classes/Public/CDVCommandDelegateImpl.m#L90
The SQLite/SQLCipher plugin does appear to be using multithreading, but I haven't confirmed this.
Tested on Cordova-iOS 3.9.2.
A workaround is to wrap all native callbacks in a setTimeout or similar call, but this may have some performance impact.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org