{ "id": "152460", "key": "TIMOB-19823", "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": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-11-12T02:27:33.000+0000", "created": "2015-10-29T04:03:59.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2015-11-25T22:53:58.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": "h6.Reproduce Step:\r\n1. Simply the test case attached.\r\n2. Scroll down until exception throw out and app crash.\r\n\r\nh6.Exception\r\n{code}\r\n[DEBUG] : AndroidRuntime: Shutting down VM\r\n[WARN] : dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x40cbb930)\r\n[ERROR] : TiApplication: (main) [914474,914474] Sending event: exception on thread: main msg:java.util.ConcurrentModificationException; Titanium 5.0.0,2015/09/15 23:07,ec79bc5\r\n[ERROR] : TiApplication: java.util.ConcurrentModificationException\r\n[ERROR] : TiApplication: \tat java.util.ArrayList$ArrayListIterator.remove(ArrayList.java:582)\r\n[ERROR] : TiApplication: \tat ti.modules.titanium.ui.widget.listview.TiListView.checkMarker(TiListView.java:457)\r\n[ERROR] : TiApplication: \tat ti.modules.titanium.ui.widget.listview.TiListView$TiBaseAdapter.getView(TiListView.java:255)\r\n[ERROR] : TiApplication: \tat android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)\r\n[ERROR] : TiApplication: \tat android.widget.AbsListView.obtainView(AbsListView.java:2143)\r\n[ERROR] : TiApplication: \tat android.widget.ListView.makeAndAddView(ListView.java:1831)\r\n[ERROR] : TiApplication: \tat android.widget.ListView.fillDown(ListView.java:674)\r\n[ERROR] : TiApplication: \tat android.widget.ListView.fillGap(ListView.java:638)\r\n[ERROR] : TiApplication: \tat android.widget.AbsListView.trackMotionScroll(AbsListView.java:4930)\r\n[ERROR] : TiApplication: \tat android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4087)\r\n[ERROR] : TiApplication: \tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)\r\n[ERROR] : TiApplication: \tat android.view.Choreographer.doCallbacks(Choreographer.java:562)\r\n[ERROR] : TiApplication: \tat android.view.Choreographer.doFrame(Choreographer.java:531)\r\n[ERROR] : TiApplication: \tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)\r\n[ERROR] : TiApplication: \tat android.os.Handler.handleCallback(Handler.java:725)\r\n[ERROR] : TiApplication: \tat android.os.Handler.dispatchMessage(Handler.java:92)\r\n[ERROR] : TiApplication: \tat android.os.Looper.loop(Looper.java:137)\r\n[ERROR] : TiApplication: \tat android.app.ActivityThread.main(ActivityThread.java:5041)\r\n[ERROR] : TiApplication: \tat java.lang.reflect.Method.invokeNative(Native Method)\r\n[ERROR] : TiApplication: \tat java.lang.reflect.Method.invoke(Method.java:511)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)\r\n[ERROR] : TiApplication: \tat dalvik.system.NativeStart.main(Native Method)\r\n{code}\r\n\r\nh6.Note\r\n1. It was working well in SDK 3.5.1.GA, but after upgrade to 5.0.x, it happened.\r\n2. Basically test code is using ListView.setMarker() heavily to track which row the user has scrolled to and loading of additional rows. \r\n3. Only happens on Android, iOS works well.", "attachment": [ { "id": "57172", "filename": "ListViewTest.zip", "author": { "name": "sliang", "key": "sliang", "displayName": "Shuo Liang", "active": true, "timeZone": "Asia/Harbin" }, "created": "2015-10-29T04:03:50.000+0000", "size": 37142, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: ConcurrentModificationException at TiListView", "creator": { "name": "sliang", "key": "sliang", "displayName": "Shuo Liang", "active": true, "timeZone": "Asia/Harbin" }, "subtasks": [], "reporter": { "name": "sliang", "key": "sliang", "displayName": "Shuo Liang", "active": true, "timeZone": "Asia/Harbin" }, "environment": "Android 5.0.x and 4.2.2\r\nSDK 5.0.0.GA and 5.0.2.GA", "closedSprints": [ { "id": 525, "state": "closed", "name": "2015 Sprint 23 SDK", "startDate": "2015-11-07T01:30:15.519Z", "endDate": "2015-11-21T01:30:00.000Z", "completeDate": "2015-11-23T02:54:27.887Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "369825", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "body": "master PR: https://github.com/appcelerator/titanium_mobile/pull/7426", "updateAuthor": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-11-11T23:51:16.000+0000", "updated": "2015-11-11T23:51:16.000+0000" }, { "id": "369844", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Tested with `ListViewTest.zip`. PR merged.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-11-12T02:29:14.000+0000", "updated": "2015-11-12T02:29:14.000+0000" }, { "id": "371488", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix.\r\n\r\nNo errors & crash seen when scrolled continuously till the end.\r\nClosing.\r\n\r\nEnvironment:\r\nAppc Studio : 4.4.0.201511241829\r\nTi SDK : 5.2.0.v20151125112632\r\nTi CLI : 5.0.5\r\nAlloy : 1.7.26\r\nMAC Yosemite : 10.10.5\r\nAppc NPM : 4.2.2\r\nAppc CLI : 5.1.0\r\nNode: v0.12.27\r\nNexus 6 - Android 6.0", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-11-25T22:53:52.000+0000", "updated": "2015-11-25T22:53:52.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }