title: Strange Crash when dismissing view controller, auto-layout to blame?
body: <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>