[ASPrimitiveTraitCollection] Convert to atomic to avoid unusual deadlock scenario. #353
Closed
Description
In this case, we deadlock because a data controller operation on the main thread can't proceed, because the last data controller background layout operation is stuck on updating the trait collection, which is also what the main thread is doing.
Since ASPrimitiveTraitCollection is a struct, this should be solvable by using an atomic instead.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
frame #0: 0x0000000116fac386 libsystem_kernel.dylib`semaphore_wait_trap + 10
frame #1: 0x0000000116c50413 libdispatch.dylib`_os_semaphore_wait + 16
frame #2: 0x0000000116c36434 libdispatch.dylib`_dispatch_group_wait_slow + 151
* frame #3: 0x000000010c910d36 DebugHarness`::-[ASDataController _scheduleBlockOnMainSerialQueue:](self=0x000060800010be20, _cmd="_scheduleBlockOnMainSerialQueue:", block=0x000000010c9105e0) at ASDataController.mm:808
frame #4: 0x000000010c91057e DebugHarness`::__40-[ASDataController environmentDidChange]_block_invoke((null)=<unavailable>) at ASDataController.mm:794
frame #5: 0x000000010c9bf383 DebugHarness`::ASPerformBlockOnMainThread(block=0x000000010c9104d0)()) at ASInternalHelpers.m:69
frame #6: 0x000000010c91046f DebugHarness`::-[ASDataController environmentDidChange](self=0x000060800010be20, _cmd="environmentDidChange") at ASDataController.mm:786
frame #7: 0x000000010c7eb419 DebugHarness`::-[ASCollectionNode setPrimitiveTraitCollection:](self=0x00007fafd2502260, _cmd="setPrimitiveTraitCollection:", traitCollection=ASPrimitiveTraitCollection @ 0x00007fff5431bc80) at ASCollectionNode.mm:787
frame #8: 0x000000010c8e74f0 DebugHarness`::-[ASViewController propagateNewTraitCollection:](self=0x00007fafd2507740, _cmd="propagateNewTraitCollection:", traitCollection=ASPrimitiveTraitCollection @ 0x00007fff5431c040) at ASViewController.mm:287
frame #9: 0x000000010c8e6025 DebugHarness`::__42-[ASViewController viewWillLayoutSubviews]_block_invoke((null)=<unavailable>) at ASViewController.mm:147
frame #10: 0x000000010f4a9d3e UIKit`+[UIView(Animation) performWithoutAnimation:] + 90
frame #11: 0x000000010c8e5ce6 DebugHarness`::-[ASViewController viewWillLayoutSubviews](self=0x00007fafd2507740, _cmd="viewWillLayoutSubviews") at ASViewController.mm:142
frame #12: 0x000000010f4b50cf UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 952
frame #13: 0x00000001120ac904 QuartzCore`-[CALayer layoutSublayers] + 146
frame #14: 0x000000010c949621 DebugHarness`::-[_ASDisplayLayer layoutSublayers](self=0x0000618000049630, _cmd="layoutSublayers") at _ASDisplayLayer.mm:103
frame #15: 0x00000001120a0526 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 370
frame #16: 0x000000010f4a2fe4 UIKit`-[UIView(Hierarchy) layoutBelowIfNeeded] + 1108
frame #17: 0x000000010c9a9bec DebugHarness`::-[ASDisplayNode(self=0x00007fafd2502260, _cmd="layoutIfNeeded") layoutIfNeeded]() at ASDisplayNode+UIViewBridge.mm:406
frame #18: 0x000000010c848631 DebugHarness`::-[ASDisplayNode didEnterPreloadState](self=0x00007fafd2502260, _cmd="didEnterPreloadState") at ASDisplayNode.mm:2889
frame #19: 0x000000010c7e2d34 DebugHarness`::-[ASCollectionNode didEnterPreloadState](self=0x00007fafd2502260, _cmd="didEnterPreloadState") at ASCollectionNode.mm:216
frame #20: 0x000000010c846b24 DebugHarness`::-[ASDisplayNode setInterfaceState:](self=0x00007fafd2502260, _cmd="setInterfaceState:", newState=15) at ASDisplayNode.mm:2714
frame #21: 0x000000010c845875 DebugHarness`::-[ASDisplayNode willEnterHierarchy](self=0x00007fafd2502260, _cmd="willEnterHierarchy") at ASDisplayNode.mm:2589
frame #22: 0x000000010c843f52 DebugHarness`::-[ASDisplayNode __enterHierarchy](self=0x00007fafd2502260, _cmd="__enterHierarchy") at ASDisplayNode.mm:2449
frame #23: 0x000000010c80b464 DebugHarness`::-[ASCollectionView willMoveToWindow:](self=0x00007fafd581d000, _cmd="willMoveToWindow:", newWindow=0x00007fafd4803120) at ASCollectionView.mm:2040
frame #24: 0x000000010f4a097d UIKit`-[UIView(Hierarchy) _willMoveToWindow:] + 861
frame #25: 0x000000010f4c8284 UIKit`-[UIScrollView _willMoveToWindow:] + 158
frame #26: 0x000000010f4b10f2 UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 447
frame #27: 0x000000010f49f9a8 UIKit`-[UIView(Hierarchy) addSubview:] + 838
frame #28: 0x000000010f3de7c2 UIKit`-[_UIParallaxDimmingView didMoveToWindow] + 179
frame #29: 0x000000010f4aebb1 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 1737
frame #30: 0x000000010f4ae7f3 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 779
frame #31: 0x000000010f4a1846 UIKit`__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 151
frame #32: 0x000000010f4a172d UIKit`-[UIView(Hierarchy) _postMovedFromSuperview:] + 828
frame #33: 0x000000010f4b16ba UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 1927
frame #34: 0x000000010f49f9a8 UIKit`-[UIView(Hierarchy) addSubview:] + 838
frame #35: 0x000000010f3d9632 UIKit`__53-[_UINavigationParallaxTransition animateTransition:]_block_invoke_2 + 2366
frame #36: 0x000000010f4a9d3e UIKit`+[UIView(Animation) performWithoutAnimation:] + 90
frame #37: 0x000000010f3d8c9f UIKit`__53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 260
frame #38: 0x000000010f4afc5d UIKit`+[UIView(Internal) _performBlockDelayingTriggeringResponderEvents:] + 188
frame #39: 0x000000010f3d86f5 UIKit`-[_UINavigationParallaxTransition animateTransition:] + 1153
frame #40: 0x000000010f5c5c43 UIKit`-[UINavigationController _startCustomTransition:] + 4324
frame #41: 0x000000010f5d5617 UIKit`-[UINavigationController _startDeferredTransitionIfNeeded:] + 687
frame #42: 0x000000010f5d67f1 UIKit`-[UINavigationController __viewWillLayoutSubviews] + 58
frame #43: 0x000000010f7c82bc UIKit`-[UILayoutContainerView layoutSubviews] + 231
frame #44: 0x000000010f4b520b UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1268
frame #45: 0x00000001120ac904 QuartzCore`-[CALayer layoutSublayers] + 146
frame #46: 0x00000001120a0526 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 370
frame #47: 0x00000001120a03a0 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
frame #48: 0x000000011202fe92 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 294
frame #49: 0x000000011205c130 QuartzCore`CA::Transaction::commit() + 468
frame #50: 0x000000010f41d313 UIKit`_afterCACommitHandler + 272
frame #51: 0x000000011626f717 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
frame #52: 0x000000011626f687 CoreFoundation`__CFRunLoopDoObservers + 391
frame #53: 0x0000000116254720 CoreFoundation`__CFRunLoopRun + 1200
frame #54: 0x0000000116254016 CoreFoundation`CFRunLoopRunSpecific + 406
frame #55: 0x0000000117835a24 GraphicsServices`GSEventRunModal + 62
frame #56: 0x000000010f3f20d4 UIKit`UIApplicationMain + 159
frame #57: 0x000000010b96ef24 DebugHarness`main at main.m:7
frame #58: 0x0000000116c9d65d libdyld.dylib`start + 1
frame #59: 0x0000000116c9d65d libdyld.dylib`start + 1
thread #2, queue = 'com.apple.libdispatch-manager'
frame #0: 0x0000000116fb4dc6 libsystem_kernel.dylib`kevent_qos + 10
frame #1: 0x0000000116c42efb libdispatch.dylib`_dispatch_mgr_wait_for_event + 66
frame #2: 0x0000000116c3c872 libdispatch.dylib`_dispatch_mgr_invoke + 197
frame #3: 0x0000000116c3c6a7 libdispatch.dylib`_dispatch_mgr_thread + 54
thread #5, name = 'com.apple.uikit.eventfetch-thread'
frame #0: 0x0000000116fac34a libsystem_kernel.dylib`mach_msg_trap + 10
frame #1: 0x0000000116fab797 libsystem_kernel.dylib`mach_msg + 55
frame #2: 0x00000001162552e4 CoreFoundation`__CFRunLoopServiceMachPort + 212
frame #3: 0x00000001162547a9 CoreFoundation`__CFRunLoopRun + 1337
frame #4: 0x0000000116254016 CoreFoundation`CFRunLoopRunSpecific + 406
frame #5: 0x000000010eeb8480 Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 274
frame #6: 0x000000010ef3dae9 Foundation`-[NSRunLoop(NSRunLoop) runUntilDate:] + 87
frame #7: 0x000000010fe62931 UIKit`-[UIEventFetcher threadMain] + 118
frame #8: 0x000000010eec7fb1 Foundation`__NSThread__start__ + 1197
frame #9: 0x0000000116fe893b libsystem_pthread.dylib`_pthread_body + 180
frame #10: 0x0000000116fe8887 libsystem_pthread.dylib`_pthread_start + 286
frame #11: 0x0000000116fe808d libsystem_pthread.dylib`thread_start + 13
thread #7, queue = 'com.apple.root.default-qos'
frame #0: 0x0000000116fb3c22 libsystem_kernel.dylib`__psynch_mutexwait + 10
frame #1: 0x0000000116fe8dfa libsystem_pthread.dylib`_pthread_mutex_lock_wait + 100
frame #2: 0x0000000116fe6519 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 285
frame #3: 0x000000010c7d7fb3 DebugHarness`ASDN::Mutex::lock(this=0x00007fafd402b408) at ASThread.h:217
frame #4: 0x000000010c8145e8 DebugHarness`::-[ASDisplayNode(self=0x00007fafd402b400, _cmd="setPrimitiveTraitCollection:", traitCollection=ASPrimitiveTraitCollection @ 0x000070000c9d2300) setPrimitiveTraitCollection:](ASPrimitiveTraitCollection) at ASDisplayNode+Layout.mm:107
frame #5: 0x000000010c92f565 DebugHarness`::ASTraitCollectionPropagateDown(element=0x00007fafd402b400, traitCollection=ASPrimitiveTraitCollection @ 0x000070000c9d2550) at ASTraitCollection.m:27
frame #6: 0x000000010c92f765 DebugHarness`::ASTraitCollectionPropagateDown(element=0x00006000001c88e0, traitCollection=ASPrimitiveTraitCollection @ 0x000070000c9d27a0) at ASTraitCollection.m:31
frame #7: 0x000000010c8312ba DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd5063800, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf))) at ASDisplayNode.mm:1018
frame #8: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd5063800, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf)), size=ASLayoutElementSize @ 0x000070000c9d2e40, parentSize=(width = NaN, height = NaN)) at ASDisplayNode.mm:949
frame #9: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd5063800, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf)), parentSize=(width = NaN, height = NaN)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #10: 0x000000010c9eb7ab DebugHarness`crossChildLayout(child=0x00006000001c84a8, style=0x000070000c9d3d60, stackMin=0, stackMax=+Inf, crossMin=0, crossMax=343, parentSize=(width = NaN, height = NaN)) at ASStackUnpositionedLayout.mm:73
frame #11: 0x000000010c9eb571 DebugHarness`::___ZL43layoutItemsAlongUnconstrainedStackDimensionRNSt3__16vectorI21ASStackLayoutSpecItemNS_9allocatorIS1_EEEERK22ASStackLayoutSpecStylebRK11ASSizeRange6CGSizeb_block_invoke((null)=<unavailable>, i=1) at ASStackUnpositionedLayout.mm:689
frame #12: 0x000000010c9eb243 DebugHarness`dispatchApplyIfNeeded(iterationCount=2, forced=NO, work=0x000000010c9eb330) block_pointer) at ASStackUnpositionedLayout.mm:92
frame #13: 0x000000010c9e7a55 DebugHarness`layoutItemsAlongUnconstrainedStackDimension(items=size=2, style=0x000070000c9d3d60, concurrent=NO, sizeRange=0x000070000c9d3df0, parentSize=(width = NaN, height = NaN), useOptimizedFlexing=NO) at ASStackUnpositionedLayout.mm:684
frame #14: 0x000000010c9e6b2c DebugHarness`ASStackUnpositionedLayout::compute(children=size=2, style=0x000070000c9d3d60, sizeRange=0x000070000c9d3df0, concurrent=NO) at ASStackUnpositionedLayout.mm:726
frame #15: 0x000000010c992e18 DebugHarness`::-[ASStackLayoutSpec calculateLayoutThatFits:](self=0x00006000001c9d80, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASStackLayoutSpec.mm:146
frame #16: 0x000000010c9836a9 DebugHarness`::-[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00006000001c9d80, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c9d3fd0, parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #17: 0x000000010c98341e DebugHarness`::-[ASLayoutSpec layoutThatFits:parentSize:](self=0x00006000001c9d80, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #18: 0x000000010c9831b4 DebugHarness`::-[ASLayoutSpec layoutThatFits:](self=0x00006000001c9d80, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:93
frame #19: 0x000000010c8313da DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd4917860, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:1029
frame #20: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd4917860, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c9d4870, parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #21: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4917860, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), parentSize=(width = 343, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #22: 0x000000010c812ff4 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4917860, _cmd="measureWithSizeRange:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) measureWithSizeRange:](ASSizeRange) at ASDisplayNode+Layout.mm:60
frame #23: 0x000000010c812f2a DebugHarness`::-[ASDisplayNode(self=0x00007fafd4917860, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) layoutThatFits:](ASSizeRange) at ASDisplayNode+Layout.mm:54
frame #24: 0x000000010c997af9 DebugHarness`::ASLayoutElementYogaMeasureFunc(yogaNode=0x00007fafd5063200, width=343, widthMode=YGMeasureModeAtMost, height=NaN, heightMode=YGMeasureModeUndefined) at ASYogaUtilities.mm:144
frame #25: 0x000000010cb4fe0d DebugHarness`YGNodeWithMeasureFuncSetMeasuredDimensions(node=0x00007fafd5063200, availableWidth=359, availableHeight=NaN, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN) at Yoga.c:1729
frame #26: 0x000000010cb4a1e8 DebugHarness`YGNodelayoutImpl(node=0x00007fafd5063200, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:1978
frame #27: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd5063200, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #28: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd5062c00, child=0x00007fafd5063200, width=359, widthMode=YGMeasureModeAtMost, height=NaN, parentWidth=359, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #29: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd5062c00, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:2138
frame #30: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd5062c00, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #31: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd3853e00, child=0x00007fafd5062c00, width=359, widthMode=YGMeasureModeAtMost, height=NaN, parentWidth=359, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #32: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd3853e00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:2138
frame #33: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd3853e00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #34: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd385ba00, child=0x00007fafd3853e00, width=375, widthMode=YGMeasureModeExactly, height=NaN, parentWidth=375, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #35: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd385ba00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionInherit, widthMeasureMode=YGMeasureModeExactly, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=true, config=0x000000010d916008) at Yoga.c:2138
frame #36: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd385ba00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionInherit, widthMeasureMode=YGMeasureModeExactly, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=true, reason="initial", config=0x000000010d916008) at Yoga.c:3287
frame #37: 0x000000010cb4dc67 DebugHarness`YGNodeCalculateLayout(node=0x00007fafd385ba00, parentWidth=375, parentHeight=NaN, parentDirection=YGDirectionInherit) at Yoga.c:3466
frame #38: 0x000000010c824a0c DebugHarness`::-[ASDisplayNode(self=0x00007fafd271b500, _cmd="calculateLayoutFromYogaRoot:", rootConstrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) calculateLayoutFromYogaRoot:](ASSizeRange) at ASDisplayNode+Yoga.mm:259
frame #39: 0x000000010c830882 DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd271b500, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:971
frame #40: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd271b500, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c9d7060, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #41: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd271b500, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #42: 0x000000010c986215 DebugHarness`::-[ASWrapperLayoutSpec calculateLayoutThatFits:](self=0x0000600000133100, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:275
frame #43: 0x000000010c9836a9 DebugHarness`::-[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x0000600000133100, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c9d7ae0, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #44: 0x000000010c98341e DebugHarness`::-[ASLayoutSpec layoutThatFits:parentSize:](self=0x0000600000133100, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #45: 0x000000010c9831b4 DebugHarness`::-[ASLayoutSpec layoutThatFits:](self=0x0000600000133100, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:93
frame #46: 0x000000010c8313da DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd270a460, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:1029
frame #47: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd270a460, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c9d8380, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #48: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd270a460, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #49: 0x000000010c812ff4 DebugHarness`::-[ASDisplayNode(self=0x00007fafd270a460, _cmd="measureWithSizeRange:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) measureWithSizeRange:](ASSizeRange) at ASDisplayNode+Layout.mm:60
frame #50: 0x000000010c812f2a DebugHarness`::-[ASDisplayNode(self=0x00007fafd270a460, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) layoutThatFits:](ASSizeRange) at ASDisplayNode+Layout.mm:54
frame #51: 0x000000010c9049b0 DebugHarness`::-[ASDataController _layoutNode:withConstrainedSize:](self=0x000060800010be20, _cmd="_layoutNode:withConstrainedSize:", node=0x00007fafd270a460, constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDataController.mm:198
frame #52: 0x000000010c905b0b DebugHarness`::__57-[ASDataController _allocateNodesFromElements:andLayout:]_block_invoke((null)=<unavailable>, i=0) at ASDataController.mm:230
frame #53: 0x000000010c91159e DebugHarness`::___ZL15ASDispatchApplymPU28objcproto17OS_dispatch_queue8NSObjectmU13block_pointerFvmE_block_invoke((null)=<unavailable>) at ASDispatch.h:36
frame #54: 0x0000000116c284a6 libdispatch.dylib`_dispatch_call_block_and_release + 12
frame #55: 0x0000000116c5105c libdispatch.dylib`_dispatch_client_callout + 8
frame #56: 0x0000000116c30f58 libdispatch.dylib`_dispatch_queue_override_invoke + 1716
frame #57: 0x0000000116c32ec4 libdispatch.dylib`_dispatch_root_queue_drain + 634
frame #58: 0x0000000116c32bef libdispatch.dylib`_dispatch_worker_thread3 + 123
frame #59: 0x0000000116fe85a2 libsystem_pthread.dylib`_pthread_wqthread + 1299
frame #60: 0x0000000116fe807d libsystem_pthread.dylib`start_wqthread + 13
thread #8, queue = 'org.AsyncDisplayKit.ASDataController.editingTransactionQueue:0x60800010be20'
frame #0: 0x0000000116fac386 libsystem_kernel.dylib`semaphore_wait_trap + 10
frame #1: 0x0000000116c50413 libdispatch.dylib`_os_semaphore_wait + 16
frame #2: 0x0000000116c36434 libdispatch.dylib`_dispatch_group_wait_slow + 151
frame #3: 0x000000010c905596 DebugHarness`ASDispatchApply(iterationCount=3, queue=0x0000000116c7c3c0, threadCount=16, work=0x000000010c905630) block_pointer) at ASDispatch.h:40
frame #4: 0x000000010c9050c2 DebugHarness`::-[ASDataController _allocateNodesFromElements:andLayout:](self=0x000060800010be20, _cmd="_allocateNodesFromElements:andLayout:", elements=3 elements, shouldLayout=YES) at ASDataController.mm:215
frame #5: 0x000000010c90448d DebugHarness`::-[ASDataController batchAllocateNodesFromElements:andLayout:batchSize:batchCompletion:](self=0x000060800010be20, _cmd="batchAllocateNodesFromElements:andLayout:batchSize:batchCompletion:", elements=3 elements, shouldLayout=YES, batchSize=3, batchCompletionHandler=0x000000010c90b650) at ASDataController.mm:183
frame #6: 0x000000010c90b505 DebugHarness`::__40-[ASDataController updateWithChangeSet:]_block_invoke.200((null)=<unavailable>) at ASDataController.mm:573
frame #7: 0x0000000116c284a6 libdispatch.dylib`_dispatch_call_block_and_release + 12
frame #8: 0x0000000116c5105c libdispatch.dylib`_dispatch_client_callout + 8
frame #9: 0x0000000116c2fac0 libdispatch.dylib`_dispatch_queue_serial_drain + 590
frame #10: 0x0000000116c30669 libdispatch.dylib`_dispatch_queue_invoke + 1084
frame #11: 0x0000000116c30b32 libdispatch.dylib`_dispatch_queue_override_invoke + 654
frame #12: 0x0000000116c32ec4 libdispatch.dylib`_dispatch_root_queue_drain + 634
frame #13: 0x0000000116c32bef libdispatch.dylib`_dispatch_worker_thread3 + 123
frame #14: 0x0000000116fe85a2 libsystem_pthread.dylib`_pthread_wqthread + 1299
frame #15: 0x0000000116fe807d libsystem_pthread.dylib`start_wqthread + 13
thread #9
frame #0: 0x0000000116fb444e libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x0000000116fe8621 libsystem_pthread.dylib`_pthread_wqthread + 1426
frame #2: 0x0000000116fe807d libsystem_pthread.dylib`start_wqthread + 13
thread #10, queue = 'com.apple.root.default-qos'
frame #0: 0x0000000116fb3c22 libsystem_kernel.dylib`__psynch_mutexwait + 10
frame #1: 0x0000000116fe8dfa libsystem_pthread.dylib`_pthread_mutex_lock_wait + 100
frame #2: 0x0000000116fe6519 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 285
frame #3: 0x000000010c7d7fb3 DebugHarness`ASDN::Mutex::lock(this=0x00007fafd3853208) at ASThread.h:217
frame #4: 0x000000010c8145e8 DebugHarness`::-[ASDisplayNode(self=0x00007fafd3853200, _cmd="setPrimitiveTraitCollection:", traitCollection=ASPrimitiveTraitCollection @ 0x000070000c94f300) setPrimitiveTraitCollection:](ASPrimitiveTraitCollection) at ASDisplayNode+Layout.mm:107
frame #5: 0x000000010c92f565 DebugHarness`::ASTraitCollectionPropagateDown(element=0x00007fafd3853200, traitCollection=ASPrimitiveTraitCollection @ 0x000070000c94f550) at ASTraitCollection.m:27
frame #6: 0x000000010c92f765 DebugHarness`::ASTraitCollectionPropagateDown(element=0x00006180001c99c0, traitCollection=ASPrimitiveTraitCollection @ 0x000070000c94f7a0) at ASTraitCollection.m:31
frame #7: 0x000000010c8312ba DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd5832a00, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf))) at ASDisplayNode.mm:1018
frame #8: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd5832a00, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf)), size=ASLayoutElementSize @ 0x000070000c94fe40, parentSize=(width = NaN, height = NaN)) at ASDisplayNode.mm:949
frame #9: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd5832a00, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = +Inf)), parentSize=(width = NaN, height = NaN)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #10: 0x000000010c9eb7ab DebugHarness`crossChildLayout(child=0x00006100001c9a38, style=0x000070000c950d60, stackMin=0, stackMax=+Inf, crossMin=0, crossMax=343, parentSize=(width = NaN, height = NaN)) at ASStackUnpositionedLayout.mm:73
frame #11: 0x000000010c9eb571 DebugHarness`::___ZL43layoutItemsAlongUnconstrainedStackDimensionRNSt3__16vectorI21ASStackLayoutSpecItemNS_9allocatorIS1_EEEERK22ASStackLayoutSpecStylebRK11ASSizeRange6CGSizeb_block_invoke((null)=<unavailable>, i=1) at ASStackUnpositionedLayout.mm:689
frame #12: 0x000000010c9eb243 DebugHarness`dispatchApplyIfNeeded(iterationCount=2, forced=NO, work=0x000000010c9eb330) block_pointer) at ASStackUnpositionedLayout.mm:92
frame #13: 0x000000010c9e7a55 DebugHarness`layoutItemsAlongUnconstrainedStackDimension(items=size=2, style=0x000070000c950d60, concurrent=NO, sizeRange=0x000070000c950df0, parentSize=(width = NaN, height = NaN), useOptimizedFlexing=NO) at ASStackUnpositionedLayout.mm:684
frame #14: 0x000000010c9e6b2c DebugHarness`ASStackUnpositionedLayout::compute(children=size=2, style=0x000070000c950d60, sizeRange=0x000070000c950df0, concurrent=NO) at ASStackUnpositionedLayout.mm:726
frame #15: 0x000000010c992e18 DebugHarness`::-[ASStackLayoutSpec calculateLayoutThatFits:](self=0x00006080001c9060, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASStackLayoutSpec.mm:146
frame #16: 0x000000010c9836a9 DebugHarness`::-[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00006080001c9060, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c950fd0, parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #17: 0x000000010c98341e DebugHarness`::-[ASLayoutSpec layoutThatFits:parentSize:](self=0x00006080001c9060, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #18: 0x000000010c9831b4 DebugHarness`::-[ASLayoutSpec layoutThatFits:](self=0x00006080001c9060, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:93
frame #19: 0x000000010c8313da DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd4a0f270, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:1029
frame #20: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd4a0f270, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c951870, parentSize=(width = 343, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #21: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4a0f270, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308)), parentSize=(width = 343, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #22: 0x000000010c812ff4 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4a0f270, _cmd="measureWithSizeRange:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) measureWithSizeRange:](ASSizeRange) at ASDisplayNode+Layout.mm:60
frame #23: 0x000000010c812f2a DebugHarness`::-[ASDisplayNode(self=0x00007fafd4a0f270, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 343, height = 1.7976931348623157E+308))) layoutThatFits:](ASSizeRange) at ASDisplayNode+Layout.mm:54
frame #24: 0x000000010c997af9 DebugHarness`::ASLayoutElementYogaMeasureFunc(yogaNode=0x00007fafd5832400, width=343, widthMode=YGMeasureModeAtMost, height=NaN, heightMode=YGMeasureModeUndefined) at ASYogaUtilities.mm:144
frame #25: 0x000000010cb4fe0d DebugHarness`YGNodeWithMeasureFuncSetMeasuredDimensions(node=0x00007fafd5832400, availableWidth=359, availableHeight=NaN, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN) at Yoga.c:1729
frame #26: 0x000000010cb4a1e8 DebugHarness`YGNodelayoutImpl(node=0x00007fafd5832400, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:1978
frame #27: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd5832400, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #28: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd5831e00, child=0x00007fafd5832400, width=359, widthMode=YGMeasureModeAtMost, height=NaN, parentWidth=359, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #29: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd5831e00, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:2138
frame #30: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd5831e00, availableWidth=359, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=359, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #31: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd5068400, child=0x00007fafd5831e00, width=359, widthMode=YGMeasureModeAtMost, height=NaN, parentWidth=359, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #32: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd5068400, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=false, config=0x000000010d916008) at Yoga.c:2138
frame #33: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd5068400, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionLTR, widthMeasureMode=YGMeasureModeAtMost, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=false, reason="measure", config=0x000000010d916008) at Yoga.c:3287
frame #34: 0x000000010cb50e78 DebugHarness`YGNodeComputeFlexBasisForChild(node=0x00007fafd384ac00, child=0x00007fafd5068400, width=375, widthMode=YGMeasureModeExactly, height=NaN, parentWidth=375, parentHeight=NaN, heightMode=YGMeasureModeUndefined, direction=YGDirectionLTR, config=0x000000010d916008) at Yoga.c:1531
frame #35: 0x000000010cb4aa2a DebugHarness`YGNodelayoutImpl(node=0x00007fafd384ac00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionInherit, widthMeasureMode=YGMeasureModeExactly, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=true, config=0x000000010d916008) at Yoga.c:2138
frame #36: 0x000000010cb49a66 DebugHarness`YGLayoutNodeInternal(node=0x00007fafd384ac00, availableWidth=375, availableHeight=NaN, parentDirection=YGDirectionInherit, widthMeasureMode=YGMeasureModeExactly, heightMeasureMode=YGMeasureModeUndefined, parentWidth=375, parentHeight=NaN, performLayout=true, reason="initial", config=0x000000010d916008) at Yoga.c:3287
frame #37: 0x000000010cb4dc67 DebugHarness`YGNodeCalculateLayout(node=0x00007fafd384ac00, parentWidth=375, parentHeight=NaN, parentDirection=YGDirectionInherit) at Yoga.c:3466
frame #38: 0x000000010c824a0c DebugHarness`::-[ASDisplayNode(self=0x00007fafd2713fc0, _cmd="calculateLayoutFromYogaRoot:", rootConstrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) calculateLayoutFromYogaRoot:](ASSizeRange) at ASDisplayNode+Yoga.mm:259
frame #39: 0x000000010c830882 DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd2713fc0, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:971
frame #40: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd2713fc0, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c954060, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #41: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd2713fc0, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #42: 0x000000010c986215 DebugHarness`::-[ASWrapperLayoutSpec calculateLayoutThatFits:](self=0x0000600000132980, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:275
frame #43: 0x000000010c9836a9 DebugHarness`::-[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x0000600000132980, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c954ae0, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #44: 0x000000010c98341e DebugHarness`::-[ASLayoutSpec layoutThatFits:parentSize:](self=0x0000600000132980, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASLayoutSpec.mm:93
frame #45: 0x000000010c9831b4 DebugHarness`::-[ASLayoutSpec layoutThatFits:](self=0x0000600000132980, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASLayoutSpec.mm:93
frame #46: 0x000000010c8313da DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:](self=0x00007fafd4902180, _cmd="calculateLayoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDisplayNode.mm:1029
frame #47: 0x000000010c83004d DebugHarness`::-[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:](self=0x00007fafd4902180, _cmd="calculateLayoutThatFits:restrictedToSize:relativeToParentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), size=ASLayoutElementSize @ 0x000070000c955380, parentSize=(width = 375, height = 1.7976931348623157E+308)) at ASDisplayNode.mm:949
frame #48: 0x000000010c8139d6 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4902180, _cmd="layoutThatFits:parentSize:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308)), parentSize=(width = 375, height = 1.7976931348623157E+308)) layoutThatFits:parentSize:](ASSizeRange, CGSize) at ASDisplayNode+Layout.mm:84
frame #49: 0x000000010c812ff4 DebugHarness`::-[ASDisplayNode(self=0x00007fafd4902180, _cmd="measureWithSizeRange:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) measureWithSizeRange:](ASSizeRange) at ASDisplayNode+Layout.mm:60
frame #50: 0x000000010c812f2a DebugHarness`::-[ASDisplayNode(self=0x00007fafd4902180, _cmd="layoutThatFits:", constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) layoutThatFits:](ASSizeRange) at ASDisplayNode+Layout.mm:54
frame #51: 0x000000010c9049b0 DebugHarness`::-[ASDataController _layoutNode:withConstrainedSize:](self=0x000060800010be20, _cmd="_layoutNode:withConstrainedSize:", node=0x00007fafd4902180, constrainedSize=(min = (width = 0, height = 0), max = (width = 375, height = 1.7976931348623157E+308))) at ASDataController.mm:198
frame #52: 0x000000010c905b0b DebugHarness`::__57-[ASDataController _allocateNodesFromElements:andLayout:]_block_invoke((null)=<unavailable>, i=1) at ASDataController.mm:230
frame #53: 0x000000010c91159e DebugHarness`::___ZL15ASDispatchApplymPU28objcproto17OS_dispatch_queue8NSObjectmU13block_pointerFvmE_block_invoke((null)=<unavailable>) at ASDispatch.h:36
frame #54: 0x0000000116c284a6 libdispatch.dylib`_dispatch_call_block_and_release + 12
frame #55: 0x0000000116c5105c libdispatch.dylib`_dispatch_client_callout + 8
frame #56: 0x0000000116c30f58 libdispatch.dylib`_dispatch_queue_override_invoke + 1716
frame #57: 0x0000000116c32ec4 libdispatch.dylib`_dispatch_root_queue_drain + 634
frame #58: 0x0000000116c32bef libdispatch.dylib`_dispatch_worker_thread3 + 123
frame #59: 0x0000000116fe85a2 libsystem_pthread.dylib`_pthread_wqthread + 1299
frame #60: 0x0000000116fe807d libsystem_pthread.dylib`start_wqthread + 13
Metadata
Assignees
Labels
No labels