Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find an outgoing row head for incoming head UIButton

I have a crash on an auto-layout issue on iOS7 only (iOS8 it works)

The thing is - that the UIButton indicated (0x7b7780a0) doesn't exist (when I look at recursiveDescription of the UIView).

How do I investigate this? Where to start?

edit:

I encountered this answer, https://stackoverflow.com/a/27284071/429249 and indeed I have a very small float in the traceback, however - I'm not adding constraints in code, and all my multipliers are 1

edit: Posted an answer to myself - however https://stackoverflow.com/a/27284071/429249 is an excellent answer that directed me to the solution eventually

The crash:

   2015-03-10 15:50:08.152 Cookila copy[5779:607] Objective: {objective 0x7b84c960: <750:-1.04308e-05, 250:6.61612e-05> + <750:-1.04308e-07, 250:8.9407e-08>*UIButton:0x7b6299c0.Width{id: 408} + <750:-2.23517e-08, 250:8.9407e-08>*UIButton:0x7b661ad0.Width{id: 385} + <750:-1.86265e-07, 250:8.9407e-08>*UIButton:0x7b7780a0.Width{id: 388} + <750:1.04308e-07, 250:-1.3411e-07>*UIView:0x7b6547d0.Width{id: 419}}
2015-03-10 15:50:09.674 Cookila copy[5779:607] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<NSISEngine: 0x7b84c120>{ Rows:
    UILayoutContainerView:0x7b6505a0.Height{id: 118} == 960 + 1*0x7b7679b0.marker{id: 49} + 2*0x7b638350.marker{id: 135}
    UILayoutContainerView:0x7b6505a0.Width{id: 115} == 640 + 1*0x7b767980.marker{id: 46} + 2*0x7b6592b0.marker{id: 131}
    UILayoutContainerView:0x7b6505a0.minX{id: 121} == 0 + 2*0x7b642e00.marker{id: 130} + -1*0x7b6592b0.marker{id: 131}
    UILayoutContainerView:0x7b6505a0.minY{id: 122} == 0 + 2*0x7b657350.marker{id: 134} + -1*0x7b638350.marker{id: 135}
    UINavigationTransitionView:0x7b756bc0.Height{id: 110} == 960 + 1*0x7b7679b0.marker{id: 49} + 2*0x7b664d50.marker{id: 119} + 2*0x7b638350.marker{id: 135}
    UINavigationTransitionView:0x7b756bc0.Width{id: 107} == 640 + 1*0x7b767980.marker{id: 46} + 2*0x7b664cf0.marker{id: 116} + 2*0x7b6592b0.marker{id: 131}
    UINavigationTransitionView:0x7b756bc0.minX{id: 113} == 0 + 2*0x7b6584c0.marker{id: 112} + -1*0x7b664cf0.marker{id: 116}
    UINavigationTransitionView:0x7b756bc0.minY{id: 114} == 0 + 2*0x7b664d20.marker{id: 117} + -1*0x7b664d50.marker{id: 119}
    UIViewControllerWrapperView:0x7b77add0.Height{id: 102} == 960 + 1*0x7b7679b0.marker{id: 49} + 2*0x7b659c40.marker{id: 111} + 2*0x7b664d50.marker{id: 119} + 2*0x7b638350.marker{id: 135}
    UIViewControllerWrapperView:0x7b77add0.Width{id: 99} == 640 + 1*0x7b767980.marker{id: 46} + 2*0x7b655430.marker{id: 108} + 2*0x7b664cf0.marker{id: 116} + 2*0x7b6592b0.marker{id: 131}
    UIViewControllerWrapperView:0x7b77add0.minX{id: 105} == 0 + 2*0x7b655400.marker{id: 104} + -1*0x7b655430.marker{id: 108}
    UIViewControllerWrapperView:0x7b77add0.minY{id: 106} == 0 + 2*0x7b659c10.marker{id: 109} + -1*0x7b659c40.marker{id: 111}
    UIWindow:0x7b742a60.Height{id: 45} == 960 + 1*0x7b7679b0.marker{id: 49}
    UIWindow:0x7b742a60.Width{id: 42} == 640 + 1*0x7b767980.marker{id: 46}
    UIWindow:0x7b742a60.minX{id: 41} == 0 + 2*0x7b767710.marker{id: 40} + -0.5*0x7b767980.marker{id: 46}
    UIWindow:0x7b742a60.minY{id: 44} == 0 + 2*0x7b767840.marker{id: 43} + -0.5*0x7b7679b0.marker{id: 49}
    objective{id: 1} == {objective 0x7b84c960: <750:-1.04308e-05, 250:6.61612e-05> + <750:-1.04308e-07, 250:8.9407e-08>*UIButton:0x7b6299c0.Width{id: 408} + <750:-2.23517e-08, 250:8.9407e-08>*UIButton:0x7b661ad0.Width{id: 385} + <750:-1.86265e-07, 250:8.9407e-08>*UIButton:0x7b7780a0.Width{id: 388} + <750:1.04308e-07, 250:-1.3411e-07>*UIView:0x7b6547d0.Width{id: 419}}

  Constraints:
    <NSAutoresizingMaskLayoutConstraint:0x7b638350 h=-&- v=-&- UILayoutContainerView:0x7b6505a0.height == UIWindow:0x7b742a60.height>       Marker:0x7b638350.marker{id: 135}
    <NSAutoresizingMaskLayoutConstraint:0x7b642e00 h=-&- v=-&- UILayoutContainerView:0x7b6505a0.midX == UIWindow:0x7b742a60.midX>       Marker:0x7b642e00.marker{id: 130}
    <NSAutoresizingMaskLayoutConstraint:0x7b655400 h=-&- v=-&- UIViewControllerWrapperView:0x7b77add0.midX == UINavigationTransitionView:0x7b756bc0.midX>       Marker:0x7b655400.marker{id: 104}
    <NSAutoresizingMaskLayoutConstraint:0x7b655430 h=-&- v=-&- UIViewControllerWrapperView:0x7b77add0.width == UINavigationTransitionView:0x7b756bc0.width>     Marker:0x7b655430.marker{id: 108}
    <NSAutoresizingMaskLayoutConstraint:0x7b657350 h=-&- v=-&- UILayoutContainerView:0x7b6505a0.midY == UIWindow:0x7b742a60.midY>       Marker:0x7b657350.marker{id: 134}
    <NSAutoresizingMaskLayoutConstraint:0x7b6584c0 h=-&- v=-&- UINavigationTransitionView:0x7b756bc0.midX == UILayoutContainerView:0x7b6505a0.midX>     Marker:0x7b6584c0.marker{id: 112}
    <NSAutoresizingMaskLayoutConstraint:0x7b6592b0 h=-&- v=-&- UILayoutContainerView:0x7b6505a0.width == UIWindow:0x7b742a60.width>     Marker:0x7b6592b0.marker{id: 131}
    <NSAutoresizingMaskLayoutConstraint:0x7b659c10 h=-&- v=-&- UIViewControllerWrapperView:0x7b77add0.midY == UINavigationTransitionView:0x7b756bc0.midY>       Marker:0x7b659c10.marker{id: 109}
    <NSAutoresizingMaskLayoutConstraint:0x7b659c40 h=-&- v=-&- UIViewControllerWrapperView:0x7b77add0.height == UINavigationTransitionView:0x7b756bc0.height>       Marker:0x7b659c40.marker{id: 111}
    <NSAutoresizingMaskLayoutConstraint:0x7b664cf0 h=-&- v=-&- UINavigationTransitionView:0x7b756bc0.width == UILayoutContainerView:0x7b6505a0.width>       Marker:0x7b664cf0.marker{id: 116}
    <NSAutoresizingMaskLayoutConstraint:0x7b664d20 h=-&- v=-&- UINavigationTransitionView:0x7b756bc0.midY == UILayoutContainerView:0x7b6505a0.midY>     Marker:0x7b664d20.marker{id: 117}
    <NSAutoresizingMaskLayoutConstraint:0x7b664d50 h=-&- v=-&- UINavigationTransitionView:0x7b756bc0.height == UILayoutContainerView:0x7b6505a0.height>     Marker:0x7b664d50.marker{id: 119}
    <NSAutoresizingMaskLayoutConstraint:0x7b767980 h=--- v=--- H:[UIWindow:0x7b742a60(320)]>        Marker:0x7b767980.marker{id: 46}
    <NSAutoresizingMaskLayoutConstraint:0x7b7679b0 h=--- v=--- V:[UIWindow:0x7b742a60(480)]>        Marker:0x7b7679b0.marker{id: 49}
    <_UIWindowAnchoringConstraint:0x7b767710 h=--- v=--- UIWindow:0x7b742a60.midX == + 160>     Marker:0x7b767710.marker{id: 40}
    <_UIWindowAnchoringConstraint:0x7b767840 h=--- v=--- UIWindow:0x7b742a60.midY == + 240>     Marker:0x7b767840.marker{id: 43}

  Integralization Adjustments:
(none)

  Statistics:
    16 rows. Variable counts:
          1 ->   2
          2 ->  10
          3 ->   2
          4 ->   2
}: internal error.  Cannot find an outgoing row head for incoming head UIButton:0x7b7780a0.Width{id: 388}, which should never happen.'
*** First throw call stack:
(
    0   CoreFoundation                      0x03e051e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x03b848e5 objc_exception_throw + 44
    2   CoreFoundation                      0x03e04fbb +[NSException raise:format:] + 139
    3   Foundation                          0x035b4079 -[NSISEngine minimizeConstantInObjectiveRowWithHead:] + 256
    4   Foundation                          0x035b3ee3 -[NSISEngine optimize] + 183
    5   Foundation                          0x037286d8 -[NSISEngine withBehaviors:performModifications:] + 183
    6   Foundation                          0x035b83c5 -[NSISEngine withAutomaticOptimizationDisabled:] + 48
    7   UIKit                               0x02695830 -[UIView(Hierarchy) _postMovedFromSuperview:] + 313
    8   UIKit                               0x026a0dd4 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1875
    9   UIKit                               0x02693c4f -[UIView(Hierarchy) insertSubview:atIndex:] + 64
    10  UIKit                               0x02628089 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 1896
    11  UIKit                               0x0269a81f +[UIView(Animation) performWithoutAnimation:] + 82
    12  UIKit                               0x026274f6 -[_UINavigationParallaxTransition animateTransition:] + 1155
    13  UIKit                               0x0276e3ae -[UINavigationController _startCustomTransition:] + 3446
    14  UIKit                               0x0277a8f7 -[UINavigationController _startDeferredTransitionIfNeeded:] + 688
    15  UIKit                               0x0277b4e9 -[UINavigationController __viewWillLayoutSubviews] + 57
    16  UIKit                               0x028bc0d1 -[UILayoutContainerView layoutSubviews] + 213
    17  UIKit                               0x026a3964 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
    18  libobjc.A.dylib                     0x03b9682b -[NSObject performSelector:withObject:] + 70
    19  QuartzCore                          0x0250845a -[CALayer layoutSublayers] + 148
    20  QuartzCore                          0x024fc244 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    21  QuartzCore                          0x024fc0b0 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
    22  QuartzCore                          0x024627fa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294
    23  QuartzCore                          0x02463b85 _ZN2CA11Transaction6commitEv + 393
    24  QuartzCore                          0x02464258 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
    25  CoreFoundation                      0x03dcd36e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
    26  CoreFoundation                      0x03dcd2bf __CFRunLoopDoObservers + 399
    27  CoreFoundation                      0x03dab254 __CFRunLoopRun + 1076
    28  CoreFoundation                      0x03daa9d3 CFRunLoopRunSpecific + 467
    29  CoreFoundation                      0x03daa7eb CFRunLoopRunInMode + 123
    30  GraphicsServices                    0x0585b5ee GSEventRunModal + 192
    31  GraphicsServices                    0x0585b42b GSEventRun + 104
    32  UIKit                               0x02634f9b UIApplicationMain + 1225
    33  Cookila copy                        0x0008a0fd main + 141
    34  libdyld.dylib                       0x048276d9 start + 1
    35  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

self.view recursiveDescription (ran before the crash on a breakpoint in ViewWillAppear):

<UIView: 0x7b67d660; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x7b67d6c0>>
   | <UIImageView: 0x7b67cfb0; frame = (0 0; 320 568); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x7b67d030>>
   | <UIButton: 0x7b674310; frame = (160 515; 75 30); opaque = NO; autoresize = RM+BM; tag = 115; layer = <CALayer: 0x7b674400>>
   | <UIButton: 0x7b67ecf0; frame = (235 515; 75 30); opaque = NO; autoresize = RM+BM; tag = 116; layer = <CALayer: 0x7b67ede0>>
   | <UIButton: 0x7b67ccd0; frame = (85 515; 75 30); opaque = NO; autoresize = RM+BM; tag = 114; layer = <CALayer: 0x7b67cdc0>>
   | <UIButton: 0x7b6764c0; frame = (10 455; 75 60); opaque = NO; autoresize = RM+BM; tag = 13; layer = <CALayer: 0x7b6765b0>>
   | <UIButton: 0x7b6745d0; frame = (85 455; 75 60); opaque = NO; autoresize = RM+BM; tag = 14; layer = <CALayer: 0x7b6746c0>>
   | <UIButton: 0x7b67f1f0; frame = (160 455; 75 60); opaque = NO; autoresize = RM+BM; tag = 15; layer = <CALayer: 0x7b67f2e0>>
   | <UIButton: 0x7b67c890; frame = (10 515; 75 30); opaque = NO; autoresize = RM+BM; tag = 113; layer = <CALayer: 0x7b67f9c0>>
   | <UIButton: 0x7b672dc0; frame = (235 455; 75 60); opaque = NO; autoresize = RM+BM; tag = 16; layer = <CALayer: 0x7b679950>>
   | <UIView: 0x7b67d520; frame = (0 428; 320 27); autoresize = RM+BM; layer = <CALayer: 0x7b67d580>>
   | <UIButton: 0x7b67f430; frame = (160 398; 75 30); opaque = NO; autoresize = RM+BM; tag = 111; layer = <CALayer: 0x7b67f520>>
   | <UIButton: 0x7b6733f0; frame = (235 398; 75 30); opaque = NO; autoresize = RM+BM; tag = 112; layer = <CALayer: 0x7b67a9c0>>
   | <UIButton: 0x7b675850; frame = (85 398; 75 30); opaque = NO; autoresize = RM+BM; tag = 110; layer = <CALayer: 0x7b675940>>
   | <UIButton: 0x7b656330; frame = (10 338; 75 60); opaque = NO; autoresize = RM+BM; tag = 9; layer = <CALayer: 0x7b642d40>>
   | <UIButton: 0x7b6753a0; frame = (85 338; 75 60); opaque = NO; autoresize = RM+BM; tag = 10; layer = <CALayer: 0x7b665bd0>>
   | <UIButton: 0x7b6737f0; frame = (160 338; 75 60); opaque = NO; autoresize = RM+BM; tag = 11; layer = <CALayer: 0x7b6738e0>>
   | <UIButton: 0x7b6762e0; frame = (10 398; 75 30); opaque = NO; autoresize = RM+BM; tag = 109; layer = <CALayer: 0x7b6763d0>>
   | <UIButton: 0x7b675ba0; frame = (235 338; 75 60); opaque = NO; autoresize = RM+BM; tag = 12; layer = <CALayer: 0x7b673a20>>
   | <UIView: 0x7b67d3d0; frame = (0 311; 320 27); autoresize = RM+BM; layer = <CALayer: 0x7b67d430>>
   | <UIButton: 0x7b675d50; frame = (160 281; 75 30); opaque = NO; autoresize = RM+BM; tag = 107; layer = <CALayer: 0x7b675e40>>
   | <UIButton: 0x7b663970; frame = (235 281; 75 30); opaque = NO; autoresize = RM+BM; tag = 108; layer = <CALayer: 0x7b663a60>>
   | <UIButton: 0x7b675580; frame = (85 281; 75 30); opaque = NO; autoresize = RM+BM; tag = 106; layer = <CALayer: 0x7b675670>>
   | <UIButton: 0x7b665a00; frame = (10 221; 75 60); opaque = NO; autoresize = RM+BM; tag = 5; layer = <CALayer: 0x7b663c40>>
   | <UIButton: 0x7b67ca90; frame = (85 221; 75 60); opaque = NO; autoresize = RM+BM; tag = 6; layer = <CALayer: 0x7b67cb80>>
   | <UIButton: 0x7b674150; frame = (160 221; 75 60); opaque = NO; autoresize = RM+BM; tag = 7; layer = <CALayer: 0x7b6564b0>>
   | <UIButton: 0x7b6734e0; frame = (10 281; 75 30); opaque = NO; autoresize = RM+BM; tag = 105; layer = <CALayer: 0x7b6796e0>>
   | <UIButton: 0x7b67efb0; frame = (235 221; 75 60); opaque = NO; autoresize = RM+BM; tag = 8; layer = <CALayer: 0x7b67f0a0>>
   | <UIButton: 0x7b67f700; frame = (160 164; 75 30); opaque = NO; autoresize = RM+BM; tag = 103; layer = <CALayer: 0x7b67f7f0>>
   | <UIButton: 0x7b676020; frame = (235 164; 75 30); opaque = NO; autoresize = RM+BM; tag = 104; layer = <CALayer: 0x7b676110>>
   | <UIButton: 0x7b676700; frame = (85 164; 75 30); opaque = NO; autoresize = RM+BM; tag = 102; layer = <CALayer: 0x7b674ea0>>
   | <UIButton: 0x7b67eab0; frame = (10 104; 75 60); opaque = NO; autoresize = RM+BM; tag = 1; layer = <CALayer: 0x7b67eba0>>
   | <UIButton: 0x7b674810; frame = (85 104; 75 60); opaque = NO; autoresize = RM+BM; tag = 2; layer = <CALayer: 0x7b674900>>
   | <UIButton: 0x7b674a50; frame = (10 164; 75 30); opaque = NO; autoresize = RM+BM; tag = 101; layer = <CALayer: 0x7b674b40>>
   | <UIButton: 0x7b642bd0; frame = (235 104; 75 60); opaque = NO; autoresize = RM+BM; tag = 4; layer = <CALayer: 0x7b6752a0>>
   | <UIView: 0x7b67d1f0; frame = (0 194; 320 27); autoresize = RM+BM; layer = <CALayer: 0x7b67d250>>
   | <UIButton: 0x7b675060; frame = (160 104; 75 60); opaque = NO; autoresize = RM+BM; tag = 3; layer = <CALayer: 0x7b675150>>
   | <UIButton: 0x7b67b7f0; frame = (258 20; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7b672b90>>
   | <_UILayoutGuide: 0x7b67d790; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7b67d800>>
   | <_UILayoutGuide: 0x7b67c0a0; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7b67c110>>
like image 642
Boaz Avatar asked Mar 10 '15 13:03

Boaz


Video Answer


1 Answers

Apparently the offending UIButton is in the ViewController we were going out of (!) and not the one being created in the transition.

Not sure why....

Anyway - the problematic constraint was a 4:3 ratio constraint...

like image 179
Boaz Avatar answered Sep 21 '22 13:09

Boaz