Note that there are some explanatory texts on larger screens.

plurals
  1. POStrange Crash when dismissing view controller, auto-layout to blame?
    text
    copied!<p>I am experiencing a very strange crash, here is the backtrace.</p> <pre><code>* thread #1: tid = 0x2403, 0x3379516c CoreFoundation`CFHash + 8, stop reason = EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe) frame #0: 0x3379516c CoreFoundation`CFHash + 8 frame #1: 0x33797a9c CoreFoundation`CFBasicHashRemoveValue + 1408 frame #2: 0x337974ee CoreFoundation`CFDictionaryRemoveValue + 166 frame #3: 0x3420988e Foundation`-[NSISEngine removeConstraintWithMarker:] + 562 frame #4: 0x34211dbe Foundation`-[NSLayoutConstraint _removeFromEngine:] + 230 frame #5: 0x35a954ec UIKit`-[UIView(UIConstraintBasedLayout) _layoutEngine_willRemoveLayoutConstraint:] + 44 frame #6: 0x358488fc UIKit`__48-[UIScrollView _setAutomaticContentConstraints:]_block_invoke_0 + 148 frame #7: 0x34208882 Foundation`-[NSISEngine withAutomaticOptimizationDisabled:] + 166 frame #8: 0x35848838 UIKit`-[UIScrollView _setAutomaticContentConstraints:] + 116 frame #9: 0x35848e6c UIKit`-[UIScrollView _rememberDependentConstraint:] + 112 frame #10: 0x35a9e3ae UIKit`___updateViewDependenciesForConstraint_block_invoke_0 + 30 frame #11: 0x35a954ba UIKit`_updateViewDependenciesForConstraint + 202 frame #12: 0x35a953da UIKit`-[UIView(UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutuallyExclusiveConstraints:] + 154 frame #13: 0x35a95534 UIKit`-[UIView(UIConstraintBasedLayout) _tryToAddConstraintWithoutUpdatingConstraintsArray:roundingAdjustment:mutuallyExclusiveConstraints:] + 36 frame #14: 0x3567c2e0 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 376 frame #15: 0x356d34fe UIKit`-[UIScrollView _didMoveFromWindow:toWindow:] + 50 frame #16: 0x3567c5c6 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 1118 frame #17: 0x35676e52 UIKit`-[UIView(Hierarchy) _postMovedFromSuperview:] + 138 frame #18: 0x3565e7dc UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 1300 frame #19: 0x3565e2c2 UIKit`-[UIView(Hierarchy) addSubview:] + 30 frame #20: 0x356f68e8 UIKit`-[UITransitionView transition:fromView:toView:removeFromView:] + 972 frame #21: 0x35937618 UIKit`__91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0238 + 388 frame #22: 0x357499b8 UIKit`-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 4824 frame #23: 0x357b9814 UIKit`-[UIViewController _dismissViewControllerWithTransition:from:completion:] + 1708 frame #24: 0x357057c4 UIKit`-[UIViewController dismissViewControllerWithTransition:completion:] + 912 frame #25: 0x000ccd40 Capture`-[INFTagSearchViewController cancelButtonTouched:](self=0x1f09ed50, _cmd=0x001b9d5f, sender=0x1e0265c0) + 76 at INFTagSearchViewController.m:48 frame #26: 0x357470c4 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 72 frame #27: 0x35747076 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30 frame #28: 0x35747054 UIKit`-[UIControl sendAction:to:forEvent:] + 44 frame #29: 0x3574690a UIKit`-[UIControl(Internal) _sendActionsForEvents:withEvent:] + 502 frame #30: 0x35746e00 UIKit`-[UIControl touchesEnded:withEvent:] + 488 frame #31: 0x3566f5f0 UIKit`-[UIWindow _sendTouchesForEvent:] + 524 frame #32: 0x3565c800 UIKit`-[UIApplication sendEvent:] + 380 frame #33: 0x3565c11a UIKit`_UIApplicationHandleEvent + 6154 frame #34: 0x373655a2 GraphicsServices`_PurpleEventCallback + 590 frame #35: 0x373651d2 GraphicsServices`PurpleEventCallback + 34 frame #36: 0x33829172 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34 frame #37: 0x33829116 CoreFoundation`__CFRunLoopDoSource1 + 138 frame #38: 0x33827f98 CoreFoundation`__CFRunLoopRun + 1384 frame #39: 0x3379aebc CoreFoundation`CFRunLoopRunSpecific + 356 frame #40: 0x3379ad48 CoreFoundation`CFRunLoopRunInMode + 104 frame #41: 0x373642ea GraphicsServices`GSEventRunModal + 74 frame #42: 0x356b0300 UIKit`UIApplicationMain + 1120 frame #43: 0x000a297c Capture`main(argc=1, argv=0x2fd60cfc) + 116 at main.m:16 frame #44: 0x3bb2bb20 libdyld.dylib`start + 4 </code></pre> <p>You will notice frame 25 is the only call my code makes, and it is <code>cancelButtonTouched</code> which looks like.</p> <pre><code>- (IBAction)cancelButtonTouched:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; } </code></pre> <p>I am at a loss as to what is going on, I've never had an issue like this before, based on the system calls it appears to be an auto-layout issue. I verified that viewWillApper is called on the presenting view controller before the crash occurs, so I assume it is an issuing during layout of the presenting view.</p> <p>Any ideas on how to narrow this issue down to a specific layout contstraint? Or any other ideas?</p> <p>This is reproduceable on some devices, where as on others it rarely if ever happens. So it is intermittent.</p> <p><strong>Update</strong></p> <p>Screenshot of breakpoint.</p> <p><img src="https://i.stack.imgur.com/jsvob.png" alt="enter image description here"></p> <p><strong>Update 2</strong></p> <p>So it is definitely an issue with dismissing to the <code>presentingViewController</code>, dismissing two levels deep (<code>[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]</code>) works fine, but obviously not the desired result, I only want to go back 1 level. This further leads me to believe there is an issue "re-laying" out the view.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload