{ "id": "172712", "key": "MOD-2480", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10034", "key": "MOD", "name": "Appcelerator Modules", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-02-25T23:08:58.000+0000", "created": "2018-12-07T00:34:55.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2019-02-25T23:09:13.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": "For compatibility with the web client we have our own event listener methods {{on}}, {{once}} and {{off}}. Those do not properly protect the callback against GC so when the event listener is ultimately called and was already subject to GC the app will crash.", "attachment": [], "flagged": false, "summary": "SocketIO: Event handler GC leads to crash (iOS)", "creator": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "444321", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thanks for creating the ticket Jan! If there is a workaround (e.g. by using callbacks directly), we could apply that temporarily to be unblocked from production. Thanks!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-12-07T08:12:42.000+0000", "updated": "2018-12-07T08:12:42.000+0000" }, { "id": "444323", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "Try calling the proxy's {{addEventListener}} in addition to {{on}} or {{once}} and {{removeEventListener}} with {{off}}.. That should take care of properly storing the callback and protecting it against GC. I have a fix incoming which does exactly the same behind the scenes.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-12-07T10:20:08.000+0000", "updated": "2018-12-07T10:20:08.000+0000" }, { "id": "446306", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "Fixed with version 2.0.0 of the socket.io module.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-02-25T23:08:58.000+0000", "updated": "2019-02-25T23:08:58.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }