{ "id": "167674", "key": "TIMOB-24702", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "18414", "description": "", "name": "Release 6.2.0", "archived": false, "released": true, "releaseDate": "2017-09-13" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-07-14T22:14:12.000+0000", "created": "2017-05-17T23:22:14.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [ { "id": "19333", "description": "Patch release for important items that did not make it into 6.0.3", "name": "Release 6.0.4", "archived": false, "released": true, "releaseDate": "2017-04-27" } ], "issuelinks": [], "assignee": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updated": "2017-07-20T18:35:48.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "h5. Steps to reproduce:\r\n1. Use the code below in your app.js:\r\n{code}\r\nvar window = Titanium.UI.createWindow();\r\nvar button = Ti.UI.createButton(\r\n{\r\n\ttitle: \"Close Me\",\r\n\tcenter: {x: \"50%\", y: \"50%\"},\r\n});\r\nbutton.addEventListener(\"click\", function(e)\r\n{\r\n\tvar activity = Ti.Android.currentActivity;\r\n\tif (!activity) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\tactivity.onDestroy = function(e) {\r\n\t\t// Crashes when accessing \"size\" or \"rect\" property.\r\n\t\tvar size = button.size;\r\n\t\tvar rect = button.rect;\r\n\t};\r\n\tactivity.finish();\r\n});\r\nwindow.add(button);\r\nwindow.open();\r\n{code}\r\n(there can be more properties but I have checked {{size}} & {{rect}} here).\r\n2. Build the app for android device.\r\n3. After the app launches, click on {{Close Me}} button.\r\n\r\nh5.Actual Result:\r\n1. The app crashes with below java.lang.NullPointerException:\r\n{code}\r\n[WARN] : W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:296)\r\n[WARN] : W/System.err: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.common.TiMessenger.sendMessage(TiMessenger.java:323)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:289)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingMainMessage(TiMessenger.java:164)\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.proxy.TiViewProxy.getSize(TiViewProxy.java:376)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:73)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.KrollProxy.callPropertySync(KrollProxy.java:672)\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.TiBaseActivity.dispatchCallback(TiBaseActivity.java:1194)\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.TiBaseActivity.onDestroy(TiBaseActivity.java:1525)\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.TiLaunchActivity.onDestroy(TiLaunchActivity.java:460)\r\n[WARN] : W/System.err: \tat org.appcelerator.titanium.TiRootActivity.onDestroy(TiRootActivity.java:204)\r\n[WARN] : W/System.err: \tat android.app.Activity.performDestroy(Activity.java:6422)\r\n[WARN] : W/System.err: \tat android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1142)\r\n[WARN] : W/System.err: \tat android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3818)\r\n[WARN] : W/System.err: \tat android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3849)\r\n[WARN] : W/System.err: \tat android.app.ActivityThread.-wrap5(ActivityThread.java)\r\n[WARN] : W/System.err: \tat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)\r\n[WARN] : W/System.err: \tat android.os.Handler.dispatchMessage(Handler.java:102)\r\n[WARN] : W/System.err: \tat android.os.Looper.loop(Looper.java:148)\r\n[WARN] : W/System.err: \tat android.app.ActivityThread.main(ActivityThread.java:5417)\r\n[WARN] : W/System.err: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[WARN] : W/System.err: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)\r\n[WARN] : W/System.err: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)\r\n[WARN] : TiExceptionHandler: (main) [2096,2096] Activity is null or already finishing, skipping dialog.\r\n[ERROR] : V8Exception: Exception occurred at /app.js:1: Uncaught Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference\r\n[ERROR] : V8Exception: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference\r\n{code}\r\n\r\nh5.Actual Results:\r\n1. The app should not crash. ", "attachment": [], "flagged": false, "summary": "Android: Accessing 'size' & 'rect' button properties after activity.finish() crashes the app with java.lang.NullPointerException", "creator": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Studio Ver: 4.9.0.201705160715\r\nSDK Ver: 6.0.4.GA\r\nOS Ver: 10.12.3\r\nXcode Ver: Xcode 8.3.2\r\nAppc NPM: 4.2.9\r\nAppc CLI: 6.2.1\r\nTi CLI Ver: 5.0.13\r\nAlloy Ver: 1.9.11\r\nNode Ver: 6.10.1\r\nJava Ver: 1.8.0_101\r\nDevices: ⇨ google Nexus 6 --- Android 6.0.1\r\n", "closedSprints": [ { "id": 920, "state": "closed", "name": "2017 Sprint 14 SDK", "startDate": "2017-07-02T16:29:41.455Z", "endDate": "2017-07-16T16:29:00.000Z", "completeDate": "2017-07-17T14:39:47.328Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "420585", "author": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "body": "master: https://github.com/appcelerator/titanium_mobile/pull/9096", "updateAuthor": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-05-30T11:06:36.000+0000", "updated": "2017-05-30T11:06:36.000+0000" }, { "id": "424463", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified fix in SDK Version: 6.2.0.v20170719160617. Test and other information an be found at: \r\nhttps://github.com/appcelerator/titanium_mobile/pull/9096", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-07-20T18:35:41.000+0000", "updated": "2017-07-20T18:35:41.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }