{ "id": "155953", "key": "TIMOB-20623", "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": "17608", "name": "Release 6.1.0", "archived": false, "released": true, "releaseDate": "2017-05-26" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-03-29T20:52:58.000+0000", "created": "2016-03-24T16:08:26.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [ { "id": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-03-30T13:49:21.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": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "Following the steps below causes the app to crash with:\r\n\r\nThe application has crashed with an uncaught exception 'org.voya_crash.TiUITabProxy'.\r\nReason:\r\nInvalid type passed to function\r\n\r\n1) Create a classic Titanium app for iOS\r\n2) Replace the Resources with the ones from the attachment\r\n3) Run in iOS Simulator\r\n4) Click on the 'Welcome' message\r\n5) Click on 'tab2'\r\n6) Click on 'welcome2'\r\n7) Click on tab1\r\n8) Click on 'welcome1'\r\n9) Background the app and close it from the Multitasking screen\r\n10) App crashes\r\n\r\nConsole output of crash:\r\n{code}\r\n[ERROR] : The application has crashed with an uncaught exception 'org.voya_crash.TiUITabProxy'.\r\n[ERROR] : Reason:\r\n[ERROR] : Invalid type passed to function\r\n[ERROR] : Stack trace:\r\n[ERROR] : \r\n[ERROR] : 0 CoreFoundation 0x000000010ce86d6d __exceptionPreprocess + 141\r\n[ERROR] : 1 libobjc.A.dylib 0x000000010c854deb objc_exception_throw + 48\r\n[ERROR] : 2 voya_crash 0x000000010702ff78 TiExceptionThrowWithNameAndReason + 200\r\n[ERROR] : 3 voya_crash 0x0000000106ff8819 -[TiProxy throwException:subreason:location:] + 105\r\n[ERROR] : 4 voya_crash 0x0000000106f8f14d -[TiUITabProxy rootController] + 429\r\n[ERROR] : 5 voya_crash 0x0000000106f8f73b -[TiUITabProxy closeWindowProxy:animated:] + 107\r\n[ERROR] : 6 voya_crash 0x0000000106f8f581 -[TiUITabProxy closeOnUIThread:] + 401\r\n[ERROR] : 7 voya_crash 0x0000000106f903ea __28-[TiUITabProxy closeWindow:]_block_invoke + 42\r\n[ERROR] : 8 voya_crash 0x0000000107030b94 __TiThreadPerformOnMainThread_block_invoke + 52\r\n[ERROR] : 9 voya_crash 0x00000001070305d7 TiThreadPerformOnMainThread + 407\r\n[ERROR] : 10 voya_crash 0x0000000106f903b2 -[TiUITabProxy closeWindow:] + 610\r\n[ERROR] : 11 voya_crash 0x000000010713156f -[TiWindowProxy close:] + 335\r\n[ERROR] : 12 voya_crash 0x0000000106f7048a __27-[TiUIWindowProxy _destroy]_block_invoke + 42\r\n[ERROR] : 13 voya_crash 0x0000000107030b94 __TiThreadPerformOnMainThread_block_invoke + 52\r\n[ERROR] : 14 voya_crash 0x0000000107030f23 TiThreadProcessPendingMainThreadBlocks + 403\r\n[ERROR] : 15 voya_crash 0x00000001070e740f -[TiApp waitForKrollProcessing] + 159\r\n[ERROR] : 16 voya_crash 0x00000001070e75af -[TiApp applicationWillTerminate:] + 399\r\n[ERROR] : 17 UIKit 0x0000000108e20401 -[UIApplication _terminateWithStatus:] + 136\r\n[ERROR] : 18 UIKit 0x0000000108e214fc __102-[UIApplication _handleApplicationDeactivationWithScene:shouldForceExit:transitionContext:completion:]_block_invoke1979 + 911\r\n[ERROR] : 19 UIKit 0x0000000108e24f62 _runAfterCACommitDeferredBlocks + 317\r\n[ERROR] : 20 UIKit 0x0000000108e38e4c _cleanUpAfterCAFlushAndRunDeferredBlocks + 95\r\n[ERROR] : 21 UIKit 0x0000000108e45147 _afterCACommitHandler + 90\r\n[ERROR] : 22 CoreFoundation 0x000000010cdabc37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23\r\n[ERROR] : 23 CoreFoundation 0x000000010cdabba7 __CFRunLoopDoObservers + 391\r\n[ERROR] : 24 CoreFoundation 0x000000010cda17fb __CFRunLoopRun + 1147\r\n[ERROR] : 25 CoreFoundation 0x000000010cda10f8 CFRunLoopRunSpecific + 488\r\n[ERROR] : 26 GraphicsServices 0x000000010e99bad2 GSEventRunModal + 161\r\n[ERROR] : 27 UIKit 0x0000000108e18f09 UIApplicationMain + 171\r\n[ERROR] : 28 voya_crash 0x0000000106f1abb6 main + 310\r\n[ERROR] : 29 libdyld.dylib 0x000000010e29f92d start + 1\r\n[ERROR] : \r\n[ERROR] : 2016-03-24 14:51:52.487 voya_crash[28440:14850942] *** Terminating app due to uncaught exception 'org.voya_crash.TiUITabProxy', reason: 'Invalid type passed to function'\r\n[ERROR] : *** First throw call stack:\r\n[ERROR] : (\r\n[ERROR] : \t0 CoreFoundation 0x000000010ce86d85 __exceptionPreprocess + 165\r\n[ERROR] : \t1 libobjc.A.dylib 0x000000010c854deb objc_exception_throw + 48\r\n[ERROR] : \t2 voya_crash 0x000000010702ff78 TiExceptionThrowWithNameAndReason + 200\r\n[ERROR] : \t3 voya_crash 0x0000000106ff8819 -[TiProxy throwException:subreason:location:] + 105\r\n[ERROR] : \t4 voya_crash 0x0000000106f8f14d -[TiUITabProxy rootController] + 429\r\n[ERROR] : \t5 voya_crash 0x0000000106f8f73b -[TiUITabProxy closeWindowProxy:animated:] + 107\r\n[ERROR] : \t6 voya_crash 0x0000000106f8f581 -[TiUITabProxy closeOnUIThread:] + 401\r\n[ERROR] : \t7 voya_crash 0x0000000106f903ea __28-[TiUITabProxy closeWindow:]_block_invoke + 42\r\n[ERROR] : \t8 voya_crash 0x0000000107030b94 __TiThreadPerformOnMainThread_block_invoke + 52\r\n[ERROR] : \t9 voya_crash 0x00000001070305d7 TiThreadPerformOnMainThread + 407\r\n[ERROR] : \t10 voya_crash 0x0000000106f903b2 -[TiUITabProxy closeWindow:] + 610\r\n[ERROR] : \t11 voya_crash 0x000000010713156f -[TiWindowProxy close:] + 335\r\n[ERROR] : \t12 voya_crash 0x0000000106f7048a __27-[TiUIWindowProxy _destroy]_block_invoke + 42\r\n[ERROR] : \t13 voya_crash 0x0000000107030b94 __TiThreadPerformOnMainThread_block_invoke + 52\r\n[ERROR] : \t14 voya_crash 0x0000000107030f23 TiThreadProcessPendingMainThreadBlocks + 403\r\n[ERROR] : \t15 voya_crash 0x00000001070e740f -[TiApp waitForKrollProcessing] + 159\r\n[ERROR] : \t16 voya_crash 0x00000001070e75af -[TiApp applicationWillTerminate:] + 399\r\n[ERROR] : \t17 UIKit 0x0000000108e20401 -[UIApplication _terminateWithStatus:] + 136\r\n[ERROR] : \t18 UIKit 0x0000000108e214fc __102-[UIApplication _handleApplicationDeactivationWithScene:shouldForceExit:transitionContext:completion:]_block_invoke1979 + 911\r\n[ERROR] : \t19 UIKit 0x0000000108e24f62 _runAfterCACommitDeferredBlocks + 317\r\n[ERROR] : \t20 UIKit 0x0000000108e38e4c _cleanUpAfterCAFlushAndRunDeferredBlocks + 95\r\n[ERROR] : \t21 UIKit 0x0000000108e45147 _afterCACommitHandler + 90\r\n[ERROR] : \t22 CoreFoundation 0x000000010cdabc37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23\r\n[ERROR] : \t23 CoreFoundation 0x000000010cdabba7 __CFRunLoopDoObservers + 391\r\n[ERROR] : \t24 CoreFoundation 0x000000010cda17fb __CFRunLoopRun + 1147\r\n[ERROR] : \t25 CoreFoundation 0x000000010cda10f8 CFRunLoopRunSpecific + 488\r\n[ERROR] : \t26 GraphicsServices 0x000000010e99bad2 GSEventRunModal + 161\r\n[ERROR] : \t27 UIKit 0x0000000108e18f09 UIApplicationMain + 171\r\n[ERROR] : \t28 voya_crash 0x0000000106f1abb6 main + 310\r\n[ERROR] : \t29 libdyld.dylib 0x000000010e29f92d start + 1\r\n[ERROR] : )\r\n[ERROR] : libc++abi.dylib: terminating with uncaught exception of type NSException\r\n{code}", "attachment": [ { "id": "58711", "filename": "Resources.zip", "author": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "created": "2016-03-24T16:00:01.000+0000", "size": 689376, "mimeType": "application/zip" } ], "flagged": false, "summary": "iOS: The application has crashed with an uncaught exception 'org.voya_crash.TiUITabProxy'", "creator": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "subtasks": [], "reporter": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "environment": null, "closedSprints": [ { "id": 865, "state": "closed", "name": "2017 Sprint 07 SDK", "startDate": "2017-03-26T22:01:37.741Z", "endDate": "2017-04-09T22:01:00.000Z", "completeDate": "2017-04-10T15:40:13.586Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "380905", "author": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "body": "Has anyone had a chance to look at this? I'd like to update our customer.", "updateAuthor": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "created": "2016-03-29T09:11:46.000+0000", "updated": "2016-03-29T09:11:46.000+0000" }, { "id": "381190", "author": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "body": "Here's a link to a video showing the issue using the steps above.\r\nhttps://www.dropbox.com/s/weqy1zv3y816562/iphone5_voya.mov?dl=0", "updateAuthor": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "created": "2016-03-31T16:02:33.000+0000", "updated": "2016-03-31T16:02:33.000+0000" }, { "id": "381196", "author": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Resolving this issue as invalid. We've had this issue come up before a number of times. The main issue is that a TabGroup is meant to be a \"main view controller\" and they're not supposed to be closed. TabGroups, NavigationWindows, and SplitWindows, are supposed to be the main view controller of the app and we do not support having multiple at the same time, or opening them after another window is already open.\r\nThere are some things that can be done, but we'll need to understand the specific use case. ", "updateAuthor": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-03-31T17:41:27.000+0000", "updated": "2016-03-31T17:41:27.000+0000" }, { "id": "381588", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "It's not invalid. It's a crash on something you can do natively or otherwise. Just because it doesn't match the HIG perfectly doesn't mean its invalid.", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2016-04-04T15:22:12.000+0000", "updated": "2016-04-04T15:22:12.000+0000" }, { "id": "384582", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~hansknoechel] please help here when you can. ", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-05-03T13:43:00.000+0000", "updated": "2016-05-03T13:43:00.000+0000" }, { "id": "384585", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "It crashes inside the global cleanup before app termination so the goal should be to cleanup the tabgroup proxy properly, as well as its childs. Will take a look at it.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-03T13:54:45.000+0000", "updated": "2016-05-03T13:54:45.000+0000" }, { "id": "384606", "author": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "body": "Awesome - thanks Hans!", "updateAuthor": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "created": "2016-05-03T16:09:48.000+0000", "updated": "2016-05-03T16:09:48.000+0000" }, { "id": "385662", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I would greatly appreciate an reproducible example that fits in a single app.js so we can debug it more performant and dont need to spend time on unrelated code. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-13T12:48:25.000+0000", "updated": "2016-05-13T12:48:25.000+0000" }, { "id": "385832", "author": { "name": "arohini", "key": "arohini", "displayName": "Ajith Rohini", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~clinseman] any update on this ?", "updateAuthor": { "name": "arohini", "key": "arohini", "displayName": "Ajith Rohini", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-05-16T21:37:16.000+0000", "updated": "2016-05-16T21:37:16.000+0000" }, { "id": "385878", "author": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "body": "Can you work with the code provided? It took a lot of effort to come up with a reproducible test case as is, and this most accurately reflects the clients specific use case.", "updateAuthor": { "name": "clinseman", "key": "clinseman", "displayName": "Chris Linseman", "active": true, "timeZone": "Europe/London" }, "created": "2016-05-17T07:58:16.000+0000", "updated": "2016-05-17T07:58:16.000+0000" }, { "id": "386200", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey there! So I spent some time on debugging the closing-process of our core and I was unable to reproduce the issue with our latest master (tested with both kroll- and main-thread). Then I remembered the ticket I worked on a few month that fixed something related (TIMOB-20298). So I would like to ask you if you can try using the latest 5.2.2.GA or the latest 5.4.0 build (http://builds.appcelerator.com/#master). If you need further help, please ping me on Slack. Thank you!\r\n\r\n*EDIT:* Some more technical context on this: We clean up the tabgroup when terminating the application and call several methods like above tracked. Finally, we reference the `rootViewController` of the `TiUITabProxy` which is already nil'd. So the initializer of it is called again and tries to ensure, that the value of the `window` property of the proxy equals {{TiWindowProxy}} which is also already garbage-collected. The above-mentioned fix should detect that at a early point and skip this deep-cleanup when the application is already terminating. So far so good, I hope the solution helps. Thanks!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-19T11:54:52.000+0000", "updated": "2016-05-19T12:10:56.000+0000" }, { "id": "398077", "author": { "name": "speedyankur@gmail.com", "key": "speedyankur@gmail.com", "displayName": "ankur garha", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Issue is reproducible on iPhone 6, iOS 10.0.2 (14A456) Ti SDK 5.4.0GA, Do we have any work around for it?", "updateAuthor": { "name": "speedyankur@gmail.com", "key": "speedyankur@gmail.com", "displayName": "ankur garha", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-10-04T19:11:29.000+0000", "updated": "2016-10-04T19:12:52.000+0000" }, { "id": "403178", "author": { "name": "acvauctions", "key": "acvauctions", "displayName": "Tim Poulsen (ACV)", "active": true, "timeZone": "America/New_York" }, "body": "I'm seeing this with 5.5.1.GA. \r\n\r\n{code}\r\nCrashed Thread\r\n\r\n0\tCoreFoundation 0x21a4398b __exceptionPreprocess + 124\r\n1\tlibobjc.A.dylib 0x211dee17 objc_exception_throw + 36\r\n2\tACV Auctions 0x000ba64b TiExceptionThrowWithNameAndReason (TiBase.m:197)\r\n3\tACV Auctions 0x00070dc7 -[TiUITabProxy rootController] (TiUITabProxy.m:101)\r\n4\tACV Auctions 0x000711dd -[TiUITabProxy closeWindowProxy:animated:] (TiUITabProxy.m:177)\r\n5\tACV Auctions 0x000bae75 __TiThreadPerformOnMainThread_block_invoke (TiBase.m:288)\r\n6\tACV Auctions 0x000baa59 TiThreadPerformOnMainThread (TiBase.m:308)\r\n7\tACV Auctions 0x00071a17 -[TiUITabProxy closeWindow:] (TiUITabProxy.m:281)\r\n8\tACV Auctions 0x000bae75 __TiThreadPerformOnMainThread_block_invoke (TiBase.m:288)\r\n9\tACV Auctions 0x000bb0ff TiThreadProcessPendingMainThreadBlocks (TiBase.m:399)\r\n10\tACV Auctions 0x0010eacd -[TiApp applicationWillTerminate:] + 336\r\n11\tUIKit 0x2603e38d -[UIApplication _terminateWithStatus:] + 286\r\n12\tUIKit 0x2625585d __102-[UIApplication _handleApplicationDeactivationWithScene:shouldForceExit:transitionContext:completion:]_block_invoke2019 + 906\r\n13\tUIKit 0x26258369 _runAfterCACommitDeferredBlocks + 266\r\n14\tUIKit 0x2626467b _cleanUpAfterCAFlushAndRunDeferredBlocks + 88\r\n15\tUIKit 0x25fa2a4d _afterCACommitHandler + 82\r\n16\tCoreFoundation 0x21a05739 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18\r\n17\tCoreFoundation 0x21a03a3d __CFRunLoopDoObservers + 278\r\n18\tCoreFoundation 0x21a03e6f __CFRunLoopRun + 956\r\n19\tCoreFoundation 0x219532e9 CFRunLoopRunSpecific + 518\r\n20\tCoreFoundation 0x219530d5 CFRunLoopRunInMode + 106\r\n21\tGraphicsServices 0x22f43ac9 GSEventRunModal + 158\r\n22\tUIKit 0x260180b9 UIApplicationMain + 142\r\n23\tACV Auctions 0x0003594f main (main.m:37)\r\n{code}", "updateAuthor": { "name": "acvauctions", "key": "acvauctions", "displayName": "Tim Poulsen (ACV)", "active": true, "timeZone": "America/New_York" }, "created": "2016-12-12T17:03:57.000+0000", "updated": "2016-12-12T17:03:57.000+0000" }, { "id": "409729", "author": { "name": "perdona", "key": "perdona", "displayName": "Caio Perdona", "active": true, "timeZone": "America/Los_Angeles" }, "body": "@Hans So it is a 5.5.1.GA related bug? What about newer versions?", "updateAuthor": { "name": "perdona", "key": "perdona", "displayName": "Caio Perdona", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-03-08T00:32:02.000+0000", "updated": "2017-03-08T00:32:02.000+0000" }, { "id": "409789", "author": { "name": "ben.bahrenburg@gmail.com", "key": "ben.bahrenburg@gmail.com", "displayName": "Ben Bahrenburg", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I've seen this behavior in my 6.0.x app.", "updateAuthor": { "name": "ben.bahrenburg@gmail.com", "key": "ben.bahrenburg@gmail.com", "displayName": "Ben Bahrenburg", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-03-08T03:37:30.000+0000", "updated": "2017-03-08T03:37:30.000+0000" }, { "id": "409799", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "The fix is happening in all known versions of the SDK and the behavior can be seen (rarely) when force-closing the app. It crashes because the cleanup of the view-stack accesses an already deallocated proxy from {{applicationWillTerminate}}. \r\nIt is still a crash and all crashes should and will be investigated, but as it does not crash from the for- or background but from a gesture that closes the app anyway, it isn't a blocker at this time. I will look into it today again, but crashes happening while force-closing are not the easiest ones to catch, because the debugger connection also cuts at a certain point. \r\n\r\nI hope that gives everybody affected a quick insight and I'll keep you posted here.\r\n\r\n*EDIT*: OK, here's what's going on in detail:\r\n# The application is in a termination state\r\n# The termination process takes care of cleaning up all UI elements and comes to [here|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiUITabProxy.m#L169]\r\n# It wants to close the window and tries to access the {{\\[self rootViewController\\]}} in [here|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiUITabProxy.m#L175]\r\n# It reaches the getter [here|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiUITabProxy.m#L98], but the {{rootWindow}} was already deallocated and nil'd, so it tries to recreate it over the next lines\r\n# To do that, it checks for the tab's {{window}} property that must contain a {{TiWindowProxy}} (internal class of {{Ti.UI.Window}}), but FAILS, because the proxy keys are deallocated already as well\r\n# And that's the end. It gets {{nil}} and tries to validate it with {{ENSURE_TYPE}} which fails when providing nil\r\n\r\nSo here is what we need to do: \r\n* Check for the nil'd {{rootWindow}} before calling the getter to ensure it doesn't try to recreate it\r\n* If it's already deallocated, we skip the next few lines of the termination process to finish and close the app properly\r\n\r\nEnd of story. [~ben.bahrenburg@gmail.com], you did a lot of iOS as well, does that sound reasonable for you?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-03-08T07:57:58.000+0000", "updated": "2017-03-08T08:40:17.000+0000" }, { "id": "409803", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/8866\r\n\r\n[~emerriman] I'd consider this for 6.0.3.GA as well.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-03-08T08:49:26.000+0000", "updated": "2017-03-08T08:49:26.000+0000" }, { "id": "416337", "author": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "body": "Verified as fixed, followed the test steps provided above on device, and tested for crashes for 30 attempts. Unable to reproduce the error in question.\r\n\r\nTested On:\r\n\r\niPhone 7 10.2.1 Device & Simulator\r\nMac OS Sierra (10.12.2)\r\nTi SDK: 6.1.0.v20170329142425\r\nAppc Studio: 4.8.1.201701192045\r\nAppc NPM: 4.2.9-1\r\nApp CLI: 6.1.0\r\nXcode 8.2.1\r\nNode v4.6.0\r\n\r\n*Closing ticket.*", "updateAuthor": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "created": "2017-03-30T13:49:13.000+0000", "updated": "2017-03-30T13:49:13.000+0000" } ], "maxResults": 25, "total": 25, "startAt": 0 } } }