{ "id": "172772", "key": "TIMOB-26688", "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": "19882", "name": "Release 8.0.0", "archived": false, "released": true, "releaseDate": "2019-03-14" }, { "id": "20429", "name": "Release 7.5.1", "archived": false, "released": true, "releaseDate": "2019-02-26" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-01-18T18:46:34.000+0000", "created": "2018-12-19T11:10:01.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "ios" ], "versions": [ { "id": "20405", "name": "Release 7.4.2", "archived": false, "released": true, "releaseDate": "2018-12-19" } ], "issuelinks": [], "assignee": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2019-01-23T21:45:56.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": [], "description": "Simplest case (iOS): Create an extremely simple app which just opens a controller containing a ListView with a headerView and a View inside that, and then close that controller again after a couple of seconds - the View inside the HeaderView is not destroyed / memory is not released, so the View remains, its proxy remains, the header proxy remains, the list proxy remains and the window proxy remains in memory... every time you reopen the controller the allocations grow until eventually the app freezes and refuses to respond.\r\n\r\n[Sample app attached - 'assets' folder is empty, as they're just the standard assets in any new project created via studio and take up over 13Mb so won't fit on the ticket!]", "attachment": [ { "id": "66035", "filename": "Screen Shot 2019-01-02 at 5.49.05 PM.png", "author": { "name": "rmitro", "key": "rmitro", "displayName": "Rakhi Mitro", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-01-02T11:59:49.000+0000", "size": 108934, "mimeType": "image/png" }, { "id": "65994", "filename": "TestMemory.zip", "author": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-12-19T11:09:19.000+0000", "size": 723521, "mimeType": "application/zip" } ], "flagged": false, "summary": "iOS: Proxy objects created in timers aren't released properly", "creator": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Tried Titanium SDK 7.3.0.GA, 7.4.0.GA, 7.5.0.GA\r\niOS 9.3.5, 10.3.3, 12 (real devices and simulators)", "closedSprints": [ { "id": 1108, "state": "closed", "name": "2019 Sprint 2", "startDate": "2019-01-14T17:20:19.067Z", "endDate": "2019-01-26T17:20:00.000Z", "completeDate": "2019-01-28T17:38:11.580Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "444767", "author": { "name": "rmitro", "key": "rmitro", "displayName": "Rakhi Mitro", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Hello,\r\n\r\nThanks for sharing with us. It would be great if you can share a screenshot(using device and simulator both) which displays the issue.", "updateAuthor": { "name": "rmitro", "key": "rmitro", "displayName": "Rakhi Mitro", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-12-20T05:21:21.000+0000", "updated": "2018-12-20T05:21:21.000+0000" }, { "id": "444782", "author": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hi @Rakhi Mitro, what do you want a screenshot of? The only thing I can send is the Apple Instruments Allocations window, showing the memory not being released... but not sure how much this can add to your investigation, since a snapshot will just show one instance of the memory that is there. Let me know, and can provide it as necessary...", "updateAuthor": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-12-20T16:42:15.000+0000", "updated": "2018-12-20T16:42:15.000+0000" }, { "id": "445102", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "For the proxies this is normal behavior. A proxy is the native side of a JS object and remains in memory until the JS runtime runs its garbage collection.\r\n\r\nThe view instance however should be deallocated every time the list view closes. Something in the in the list view keeps it around. Gonna take a closer look tomorrow.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-01-08T20:53:05.000+0000", "updated": "2019-01-08T20:53:05.000+0000" }, { "id": "445441", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/10629\r\nPR (8_0_X): https://github.com/appcelerator/titanium_mobile/pull/10630", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-01-17T19:03:40.000+0000", "updated": "2019-01-17T19:03:40.000+0000" }, { "id": "445456", "author": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "body": "FR Passed. Waiting for CR to merge", "updateAuthor": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-01-18T00:16:46.000+0000", "updated": "2019-01-18T00:16:46.000+0000" }, { "id": "445590", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix in SDK 8.0.0.v20190123061938.\r\nClosing.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-01-23T21:45:52.000+0000", "updated": "2019-01-23T21:45:52.000+0000" } ], "maxResults": 11, "total": 11, "startAt": 0 } } }