Return-Path: X-Original-To: apmail-cordova-issues-archive@minotaur.apache.org Delivered-To: apmail-cordova-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4AC3510B47 for ; Tue, 11 Jun 2013 23:43:21 +0000 (UTC) Received: (qmail 97335 invoked by uid 500); 11 Jun 2013 23:43:20 -0000 Delivered-To: apmail-cordova-issues-archive@cordova.apache.org Received: (qmail 97304 invoked by uid 500); 11 Jun 2013 23:43:20 -0000 Mailing-List: contact issues-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list issues@cordova.apache.org Received: (qmail 97178 invoked by uid 99); 11 Jun 2013 23:43:20 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jun 2013 23:43:20 +0000 Date: Tue, 11 Jun 2013 23:43:20 +0000 (UTC) From: "Joe Bowser (JIRA)" To: issues@cordova.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (CB-3766) Introduced bug causes Android stacktrace during cleanup of CordovaWebView MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CB-3766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Joe Bowser resolved CB-3766. ---------------------------- Resolution: Not A Problem At first I thought this was a bug, but the more I look at it, this is like putting on the parking break, then putting your car in drive and then flooring it! It's going to smell really bad, you'll probably break your parking brake, and if you smash in a wall, it won't be super obvious that's what you did. BTW: Our tests are included with CordovaAndroid. We have a test directory for the native JUnit tests. It includes some interesting examples. I recommend checking it out if you're going to do CordovaWebView stuff. Also, if you're finding memory leaks, submit those as bugs, because they ARE bugs. > Introduced bug causes Android stacktrace during cleanup of CordovaWebView > ------------------------------------------------------------------------- > > Key: CB-3766 > URL: https://issues.apache.org/jira/browse/CB-3766 > Project: Apache Cordova > Issue Type: Bug > Components: Android > Affects Versions: 2.7.0 > Reporter: Peter > Assignee: Joe Bowser > > This was already reprted on the PG Forum, where it was confirmed as a Cordova bug. > https://groups.google.com/forum/?fromgroups#!topic/phonegap/NXRvkE8Euls > I am using Cordova v2.7.0. > My Main Android Activity looks like this: > {code} > public class MainActivity extends Activity implements CordovaInterface { > CordovaWebView cwv; > ... > //Destruction code is as follows > @Override > public void onDestroy() { > if (cwv != null) { > cwv.handlePause(true); > cwv.handleDestroy(); > cwv.removeAllViews(); > cwv.destroy(); > cwv = null; > } > super.onDestroy(); > } > {code} > After 1st page is rendered, I cause the destroy event by pressing the device BACK button. > This is always resulting in a stacktrace: > {code} > 06-11 00:49:57.446: I/Web Console(823): onPause() called at file:///android_asset/app1/index.html:11 > 06-11 00:49:58.762: W/IInputConnectionWrapper(823): showStatusIcon on inactive InputConnection > 06-11 00:50:02.222: D/webviewglue(823): nativeDestroy view: 0x2a24bdb0 > 06-11 00:50:22.292: D/AndroidRuntime(823): Shutting down VM > 06-11 00:50:22.292: W/dalvikvm(823): threadid=1: thread exiting with uncaught exception (group=0x40a71930) > 06-11 00:50:22.334: E/AndroidRuntime(823): FATAL EXCEPTION: main > 06-11 00:50:22.334: E/AndroidRuntime(823): java.lang.NullPointerException > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.webkit.WebViewClassic.stopLoading(WebViewClassic.java:2645) > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.webkit.WebView.stopLoading(WebView.java:895) > 06-11 00:50:22.334: E/AndroidRuntime(823): at org.apache.cordova.CordovaWebView$2.run(CordovaWebView.java:421) > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.os.Handler.handleCallback(Handler.java:725) > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.os.Handler.dispatchMessage(Handler.java:92) > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.os.Looper.loop(Looper.java:137) > 06-11 00:50:22.334: E/AndroidRuntime(823): at android.app.ActivityThread.main(ActivityThread.java:5041) > 06-11 00:50:22.334: E/AndroidRuntime(823): at java.lang.reflect.Method.invokeNative(Native Method) > 06-11 00:50:22.334: E/AndroidRuntime(823): at java.lang.reflect.Method.invoke(Method.java:511) > 06-11 00:50:22.334: E/AndroidRuntime(823): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) > 06-11 00:50:22.334: E/AndroidRuntime(823): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) > 06-11 00:50:22.334: E/AndroidRuntime(823): at dalvik.system.NativeStart.main(Native Method) > {code} > It appears CordovaWebView.handleDestroy() is calling loadUrlIntoView(url) which reinitialises plugins and spawns a thread to handle potential timeouts. > My stacktrace seems caused by the timeout thread (in CordovaWebView) thinking that a timeout has occurred (because the flag loadUrlTimeout does not indicate otherwise) > --- > I believe my cleanup code onDestroy() is implemented correctly. If not, then how should I do it? > BTW, This same problem did not occur in Cordova v2.4 > More notes: > * I am suspicious that the problem is introduced by the fix for CB-2458. To deliberately cause plugin initialization during destruction seems strange. > * I am suspicious that the removal of baseUrl in CB-2534, means the CB-2458 is maybe not even needed anymore, so perhaps original code can be re-instated. -- 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