EmergeTools / Pow

Delightful SwiftUI effects for your app

Home Page:https://movingparts.io/pow

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AttributeGraph: cycle detected through attribute xx on macOS

Kyle-Ye opened this issue · comments

commented

A mini reproductive demo.

import SwiftUI
import Pow

@main
struct DemoApp: App {
    @State private var sheet = false
    
    var body: some Scene {
        WindowGroup {
            Button("Open Sheet") {
                sheet.toggle()
            }
            .sheet(isPresented: $sheet) {
                Text("Demo")
                    .conditionalEffect(.smoke, condition: true)
            }
        }
    }
}

Env:

Xcode 15.2.0 + Swift 5.9.1
macOS 14.4.1

Related Issue: Lakr233/FixTim#10

commented

Using "Memory Graph" tool + AGDebugKit + the following helper function, I managed to get the cycled graph.

public func magic(_ inputs: String) {
    let substrings = inputs.components(separatedBy: "0x")
    
    // Convert each substring to an Int, using the `strtoul` function
    var intArray: [Int] = []
    for substring in substrings {
        if substring.isEmpty {
            continue
        }
        let intVal = strtoul(substring, nil, 16)
        intArray.append(Int(intVal))
    }
    for (index, intValue) in intArray.enumerated() {
        export(intValue, index: index+1)
    }
}

func export(_ bitPattern: Int, index: Int) {
    let graph = Graph(bitPattern: bitPattern)
    let dot = graph.dot ?? ""
    let path = URL(fileURLWithPath: "\(NSHomeDirectory())/Downloads/FT/\(index).dot")
    do {
        try dot.write(to: path, atomically: true, encoding: .utf8)
    } catch {
        print("Error writing to file: \(error)")
    }
}

cycled part graph svg

cycle

full graph svg

The svg preview for full graph is not very clear. You'd better download it and view it.

full

=== Evaluation stack ===
frame 22.0: attribute 119664; count=1, index=0/1 PD
frame 21.0: attribute 119704; count=1, index=0/1 PD
frame 20.0: attribute 126628; count=1, index=0/2 PD
frame 19.0: attribute 132236; count=1, index=0/2 PD
frame 18.0: attribute 138472; count=1, index=0/2 PD
frame 17.0: attribute 138776; count=1, index=0/2 PD
frame 16.0: attribute 142476; count=1, index=0/2 PD
frame 15.0: attribute 144568; count=1, index=0/3 PD
frame 14.0: attribute 144504; count=1, index=0/1 PD
frame 13.0: attribute 138976; count=1, index=0/2 PD
frame 12.0: attribute 139432; count=1, index=0/1 PD
frame 11.0: attribute 126828; count=1, index=0/2 PD
frame 10.0: attribute 127172; count=1, index=0/2 PD
frame 9.0: attribute 127272; count=1, index=0/1 PD
frame 8.0: attribute 127640; count=1, index=0/3 PD
frame 7.0: attribute 127576; count=1, index=0/1 PD
frame 6.0: attribute 127944; count=1, index=0/1 PD
frame 5.0: attribute 119256; count=1, index=0/1 PD
frame 4.0: attribute 121528; count=1, index=0/2 PD
frame 3.0: attribute 121624; count=1, index=0/1 PD
frame 2.0: attribute 121976; count=1, index=0/3 PD
frame 1.0: attribute 121664; count=1, index=0/2 PD
frame 0.0: attribute 119616; count=1, index=0/4 PD
===

With the "Evaluation stack" info, we can get a hint the issue occurs in 142476 and 144568. Since there is no link between 142476 and 144568, 142476's update should not trigger 144568's udpate.

  • 142476: DynamicLayoutViewChildGeometry
  • 144568: DynamicContainer<DynamicLayoutViewAdapto…

The root issue is proxy.size call here.

upstream update:
-> frame 22(attribute 119664 - LayoutChildGeometries<...>)
-> ...
-> frame 16(attribute 142476 - DynamicLayoutViewChildGeometry)
-> trigger proxy.size
-> frame 15(attribute 144568 - DynamicContainer<DynamicLayoutViewAdapto…)
-> ...
-> frame 0(attribute 119616 - SheetContentRoot)
-> attribute 119664 [cycle detected]

commented

A more concise example to illustrate this issue:

// Set AG_TRAP_CYCLES=1 in env
@main
struct DemoApp: App {
    @State private var sheet = false
    var body: some Scene {
        WindowGroup {
            Button("Open Sheet") { sheet.toggle() }
            .sheet(isPresented: $sheet) {
                GeometryReader { proxy in
                    let size = proxy.size // Thread 1: signal SIGABRT
                    ForEach(0..<10) { Text("\($0.debugDescription)") }
                }
            }
        }
    }
}

Filed to Apple via FB13701005

commented

Before Apple fix it, I think we should consider reimplementing related modifiers(eg. SmokeEffect) at least on macOS platform. cc @mergesort

commented

Apple has disabled SwiftUI symbol since macOS 13. Reproduced the issue on macOS 12.6.1 + Xcode 13.4.1. Here is the full backtrace.

We may also try https://github.com/EmergeTools/ETSymbolication to restore the SwiftUI symbol on macOS 14.

=== AttributeGraph: cycle detected through attribute 529592 ===
2024-04-01 11:18:40.997781+0800 Demo[893:14394] [error] precondition failure: cyclic graph: 529592
AttributeGraph precondition failure: cyclic graph: 529592.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00000001a42b6d98 libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x000000010278ae84 libsystem_pthread.dylib`pthread_kill + 288
    frame #2: 0x00000001a4226340 libsystem_c.dylib`abort + 168
    frame #3: 0x00000001ca91c208 AttributeGraph`AG::precondition_failure(char const*, ...) + 192
    frame #4: 0x00000001ca9160b8 AttributeGraph`AG::Graph::print_cycle(AG::data::ptr<AG::Node>) const + 644
    frame #5: 0x00000001ca8fcf0c AttributeGraph`AG::Graph::UpdateStack::push_slow(AG::data::ptr<AG::Node>, AG::Node&, bool, bool) + 124
    frame #6: 0x00000001ca8fd8e8 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 560
    frame #7: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #8: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #9: 0x00000001ca17ffd8 SwiftUI`generic specialization <SwiftUI._FormVStackLayout> of SwiftUI.DynamicLayoutComputer.containerInfo.getter : Swift.Optional<SwiftUI.DynamicContainer.Info> + 168
    frame #10: 0x00000001ca1a8ec0 SwiftUI`merged generic specialization <SwiftUI.LayoutComputer, SwiftUI.DynamicLayoutComputer<SwiftUI._HStackLayout>> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 84
    frame #11: 0x00000001ca1ba4b0 SwiftUI`partial apply forwarder for generic specialization <SwiftUI.LayoutComputer, SwiftUI.DynamicLayoutComputer<SwiftUI._VStackLayout>> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 100
    frame #12: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #13: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #14: 0x00000001ca9048c8 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 392
    frame #15: 0x00000001ca91b1b4 AttributeGraph`AGGraphGetInputValue + 272
    frame #16: 0x00000001ca686548 SwiftUI`SwiftUI.StackLayout.Header.init(layoutContext: SwiftUI.SizeAndSpacingContext, proxies: SwiftUI.LayoutProxyCollection, majorAxis: SwiftUI.Axis, minorAxisAlignment: SwiftUI.AlignmentKey, uniformSpacing: Swift.Optional<CoreGraphics.CGFloat>, childStorage: Swift.UnsafeMutablePointer<SwiftUI.StackLayout.Child>, capacity: Swift.Int, resizeChildrenWithTrailingOverflow: Swift.Bool) -> SwiftUI.StackLayout.Header + 728
    frame #17: 0x00000001ca190190 SwiftUI`function signature specialization <Arg[2] = [Closure Propagated : closure #1 (Swift.AnyObject, (Swift.AnyObject) -> Swift.Int) -> SwiftUI.StackLayout.(Header in _68D684484B5AEF917B6B8353D57CF590) in SwiftUI.StackLayout.init(layoutContext: SwiftUI.SizeAndSpacingContext, children: SwiftUI.LayoutProxyCollection, majorAxis: SwiftUI.Axis, minorAxisAlignment: SwiftUI.AlignmentKey, uniformSpacing: Swift.Optional<CoreGraphics.CGFloat>, resizeChildrenWithTrailingOverflow: Swift.Bool) -> SwiftUI.StackLayout, Argument Types : [SwiftUI.SizeAndSpacingContextSwiftUI.LayoutProxyCollectionSwiftUI.AxisSwiftUI.AlignmentKeySwift.Optional<CoreGraphics.CGFloat>Swift.Bool]> of generic specialization <SwiftUI.StackLayout.Header, SwiftUI.StackLayout.Child> of Swift.ManagedBufferPointer.init(bufferClass: Swift.AnyObject.Type, minimumCapacity: Swift.Int, makingHeaderWith: (Swift.AnyObject, (Swift.AnyObject) -> Swift.Int) throws -> τ_0_0) throws -> Swift.ManagedBufferPointer<τ_0_0, τ_0_1> + 268
    frame #18: 0x00000001ca240ca4 SwiftUI`merged generic specialization <SwiftUI._HStackLayout> of SwiftUI.HVStack.sizeThatFits(in: SwiftUI._ProposedSize, context: SwiftUI.SizeAndSpacingContext, children: SwiftUI.LayoutProxyCollection) -> __C.CGSize + 192
    frame #19: 0x00000001ca241030 SwiftUI`merged protocol witness for SwiftUI._Layout.sizeThatFits(in: SwiftUI._ProposedSize, context: SwiftUI.SizeAndSpacingContext, children: SwiftUI.LayoutProxyCollection) -> __C.CGSize in conformance SwiftUI._HStackLayout : SwiftUI._Layout in SwiftUI + 108
    frame #20: 0x00000001ca241280 SwiftUI`protocol witness for SwiftUI._Layout.sizeThatFits(in: SwiftUI._ProposedSize, context: SwiftUI.SizeAndSpacingContext, children: SwiftUI.LayoutProxyCollection) -> __C.CGSize in conformance SwiftUI._VStackLayout : SwiftUI._Layout in SwiftUI + 56
    frame #21: 0x00000001ca538400 SwiftUI`SwiftUI.SheetContentRoot.sizeThatFits(in: SwiftUI._ProposedSize, context: SwiftUI.SizeAndSpacingContext, children: SwiftUI.LayoutProxyCollection) -> __C.CGSize + 108
    frame #22: 0x00000001ca2a2e94 SwiftUI`closure #1 () -> __C.CGSize in SwiftUI._LayoutEngine.sizeThatFits(SwiftUI._ProposedSize) -> __C.CGSize + 100
    frame #23: 0x00000001ca2a2d58 SwiftUI`SwiftUI._LayoutEngine.sizeThatFits(SwiftUI._ProposedSize) -> __C.CGSize + 392
    frame #24: 0x00000001c9e1abcc SwiftUI`SwiftUI.LayoutComputer.EngineDelegate.sizeThatFits(SwiftUI._ProposedSize) -> __C.CGSize + 100
    frame #25: 0x00000001c9b8d074 SwiftUI`SwiftUI.RootGeometry.value.getter : SwiftUI.ViewGeometry + 260
    frame #26: 0x00000001c99fc268 SwiftUI`merged generic specialization <SwiftUI.ViewGeometry, SwiftUI.RootGeometry> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 32
    frame #27: 0x00000001c9a1deb0 SwiftUI`partial apply forwarder for generic specialization <SwiftUI.ViewGeometry, SwiftUI.RootGeometry> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 40
    frame #28: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #29: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #30: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #31: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #32: 0x00000001c99fbf98 SwiftUI`generic specialization <Swift.Array<SwiftUI.ViewGeometry>, SwiftUI.LayoutChildGeometries> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 152
    frame #33: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #34: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #35: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #36: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #37: 0x00000001c9a08fb8 SwiftUI`generic specialization <SwiftUI.ViewGeometry, SwiftUI.LayoutChildGeometry> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 164
    frame #38: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #39: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #40: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #41: 0x00000001ca91b1b4 AttributeGraph`AGGraphGetInputValue + 272
    frame #42: 0x00000001c99c89f0 SwiftUI`SwiftUI.GeometryProxy.size.getter : __C.CGSize + 144
  * frame #43: 0x000000010266a8a4 Demo`closure #1 in closure #2 in ContentView.body.getter(proxy=SwiftUI.GeometryProxy @ 0x000000016d790220) at DemoApp.swift:26:34
    frame #44: 0x00000001c9a0b22c SwiftUI`partial apply forwarder for closure #1 (SwiftUI.GeometryReader<τ_0_0>) -> τ_0_0 in SwiftUI.GeometryReader.Child.updateValue() -> () + 64
    frame #45: 0x00000001ca26d598 SwiftUI`closure #1 () -> () in AttributeGraph.Attribute.syncMainIfReferences<τ_0_0>(do: (τ_0_0) -> τ_1_0) -> τ_1_0 + 184
    frame #46: 0x00000001ca26c814 SwiftUI`AttributeGraph.Attribute.syncMainIfReferences<τ_0_0>(do: (τ_0_0) -> τ_1_0) -> τ_1_0 + 428
    frame #47: 0x00000001c99ca100 SwiftUI`SwiftUI.GeometryReader.Child.updateValue() -> () + 572
    frame #48: 0x00000001c9a1defc SwiftUI`partial apply forwarder for implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 32
    frame #49: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #50: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #51: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #52: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #53: 0x00000001ca019e98 SwiftUI`SwiftUI.ForEachState.Info.Init.view.getter : SwiftUI.ForEach<τ_0_0, τ_0_1, τ_0_2> + 92
    frame #54: 0x00000001ca01a02c SwiftUI`SwiftUI.ForEachState.Info.Init.value.getter : SwiftUI.ForEachState<τ_0_0, τ_0_1, τ_0_2>.Info + 232
    frame #55: 0x00000001ca01a10c SwiftUI`protocol witness for AttributeGraph.Rule.value.getter : τ_0_0.Value in conformance SwiftUI.ForEachState<τ_0_0, τ_0_1, τ_0_2>.Info.Init : AttributeGraph.Rule in SwiftUI + 48
    frame #56: 0x00000001c98c1b4c SwiftUI`implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 296
    frame #57: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #58: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #59: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #60: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #61: 0x00000001ca01cee8 SwiftUI`SwiftUI.ForEachList.Init.info.getter : SwiftUI.ForEachState<τ_0_0, τ_0_1, τ_0_2>.Info + 84
    frame #62: 0x00000001ca01cf70 SwiftUI`SwiftUI.ForEachList.Init.updateValue() -> () + 100
    frame #63: 0x00000001c9a1defc SwiftUI`partial apply forwarder for implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 32
    frame #64: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #65: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #66: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #67: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #68: 0x00000001ca456d5c SwiftUI`SwiftUI.DynamicLayoutViewAdaptor.updatedItems() -> Swift.Optional<SwiftUI.ViewList> + 72
    frame #69: 0x00000001ca10c6d0 SwiftUI`generic specialization <SwiftUI.DynamicLayoutViewAdaptor> of SwiftUI.DynamicContainerInfo.updateItems(disableTransitions: Swift.Bool) -> (changed: Swift.Bool, hasDepth: Swift.Bool) + 68
    frame #70: 0x00000001ca10b214 SwiftUI`generic specialization <SwiftUI.DynamicLayoutViewAdaptor> of SwiftUI.DynamicContainerInfo.updateValue() -> () + 432
    frame #71: 0x00000001ca1ad34c SwiftUI`partial apply forwarder for generic specialization <SwiftUI.DynamicContainer.Info, SwiftUI.DynamicContainerInfo<SwiftUI.DynamicLayoutViewAdaptor>> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 24
    frame #72: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #73: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #74: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #75: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #76: 0x00000001c9bffec0 SwiftUI`SwiftUI.DynamicPreferenceCombiner.info.getter : Swift.Optional<SwiftUI.DynamicContainer.Info> + 172
    frame #77: 0x00000001c9c000d0 SwiftUI`SwiftUI.DynamicPreferenceCombiner.value.getter : τ_0_0.Value + 220
    frame #78: 0x00000001c98c1b4c SwiftUI`implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 296
    frame #79: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #80: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #81: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #82: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #83: 0x00000001c99eb8f4 SwiftUI`generic specialization <SwiftUI.ToolbarKey> of SwiftUI.PreferenceValueAttribute.value.getter : τ_0_0.Value + 160
    frame #84: 0x00000001c9a066b4 SwiftUI`generic specialization <SwiftUI.ToolbarStorage, SwiftUI.PreferenceValueAttribute<SwiftUI.ToolbarKey>> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 40
    frame #85: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #86: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #87: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #88: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #89: 0x00000001ca5f83fc SwiftUI`SwiftUI._PreferenceValue.wrappedValue.getter : τ_0_0.Value + 196
    frame #90: 0x00000001c9aafe80 SwiftUI`closure #1 (SwiftUI._PreferenceReadingView<τ_0_0, τ_0_1>) -> τ_0_1 in SwiftUI.PreferenceReadingChild.value.getter : τ_0_1 + 268
    frame #91: 0x00000001ca26d598 SwiftUI`closure #1 () -> () in AttributeGraph.Attribute.syncMainIfReferences<τ_0_0>(do: (τ_0_0) -> τ_1_0) -> τ_1_0 + 184
    frame #92: 0x00000001ca26c814 SwiftUI`AttributeGraph.Attribute.syncMainIfReferences<τ_0_0>(do: (τ_0_0) -> τ_1_0) -> τ_1_0 + 428
    frame #93: 0x00000001c9aafd60 SwiftUI`SwiftUI.PreferenceReadingChild.value.getter : τ_0_1 + 112
    frame #94: 0x00000001c98c1b4c SwiftUI`implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 296
    frame #95: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #96: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #97: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #98: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #99: 0x00000001c9e47584 SwiftUI`SwiftUI._ConditionalContent< where τ_0_0: SwiftUI.View, τ_0_1: SwiftUI.View>.ChildView.content.getter : SwiftUI._ConditionalContent<τ_0_0, τ_0_1> + 80
    frame #100: 0x00000001c9e47838 SwiftUI`SwiftUI._ConditionalContent< where τ_0_0: SwiftUI.View, τ_0_1: SwiftUI.View>.ChildView.value.getter : SwiftUI.AnyView + 612
    frame #101: 0x00000001c9e47980 SwiftUI`protocol witness for AttributeGraph.Rule.value.getter : τ_0_0.Value in conformance SwiftUI._ConditionalContent<τ_0_0, τ_0_1>< where τ_0_0: SwiftUI.View, τ_0_1: SwiftUI.View>.ChildView : AttributeGraph.Rule in SwiftUI + 44
    frame #102: 0x00000001c98c1b4c SwiftUI`implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.Rule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 296
    frame #103: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #104: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #105: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #106: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #107: 0x00000001ca14a460 SwiftUI`SwiftUI.AnyViewList.updateValue() -> () + 128
    frame #108: 0x00000001ca1bedd0 SwiftUI`partial apply forwarder for generic specialization <SwiftUI.ViewList, SwiftUI.AnyViewList> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 24
    frame #109: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #110: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #111: 0x00000001ca904964 AttributeGraph`AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 548
    frame #112: 0x00000001ca91b3c8 AttributeGraph`AGGraphGetValue + 240
    frame #113: 0x00000001ca456d5c SwiftUI`SwiftUI.DynamicLayoutViewAdaptor.updatedItems() -> Swift.Optional<SwiftUI.ViewList> + 72
    frame #114: 0x00000001ca10c6d0 SwiftUI`generic specialization <SwiftUI.DynamicLayoutViewAdaptor> of SwiftUI.DynamicContainerInfo.updateItems(disableTransitions: Swift.Bool) -> (changed: Swift.Bool, hasDepth: Swift.Bool) + 68
    frame #115: 0x00000001ca10b214 SwiftUI`generic specialization <SwiftUI.DynamicLayoutViewAdaptor> of SwiftUI.DynamicContainerInfo.updateValue() -> () + 432
    frame #116: 0x00000001ca1ad34c SwiftUI`partial apply forwarder for generic specialization <SwiftUI.DynamicContainer.Info, SwiftUI.DynamicContainerInfo<SwiftUI.DynamicLayoutViewAdaptor>> of implicit closure #2 (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in implicit closure #1 (τ_1_0.Type) -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 () -> (Swift.UnsafeMutableRawPointer, __C.AGAttribute) -> () in closure #1 (Swift.UnsafePointer<τ_1_0>) -> AttributeGraph.Attribute<τ_0_0> in AttributeGraph.Attribute.init<τ_0_0 where τ_0_0 == τ_1_0.Value, τ_1_0: AttributeGraph.StatefulRule>(τ_1_0) -> AttributeGraph.Attribute<τ_0_0> + 24
    frame #117: 0x00000001ca8fd2d4 AttributeGraph`AG::Graph::UpdateStack::update() + 524
    frame #118: 0x00000001ca8fd844 AttributeGraph`AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 396
    frame #119: 0x00000001ca908f74 AttributeGraph`AG::Subgraph::update(unsigned int) + 876
    frame #120: 0x00000001c9b8b76c SwiftUI`SwiftUI.ViewGraph.updateOutputs() -> () + 248
    frame #121: 0x00000001ca55f72c SwiftUI`merged generic specialization <SwiftUI.NSHostingView<SwiftUI.WindowRoot>> of closure #1 () -> () in SwiftUI.ViewRendererHost.render(interval: Swift.Double, updateDisplayList: Swift.Bool) -> () + 1784
    frame #122: 0x00000001ca557054 SwiftUI`generic specialization <SwiftUI.NSHostingView<SwiftUI.SheetContent>> of SwiftUI.ViewRendererHost.render(interval: Swift.Double, updateDisplayList: Swift.Bool) -> () + 472
    frame #123: 0x00000001ca534f94 SwiftUI`SwiftUI.SheetBridge.preferencesDidChange(SwiftUI.PreferenceList) -> () + 892
    frame #124: 0x00000001ca4dbeb4 SwiftUI`SwiftUI.NSHostingView.preferencesDidChange() -> () + 408
    frame #125: 0x00000001c9b8bc88 SwiftUI`closure #1 () -> () in SwiftUI.ViewGraph.updateOutputs() -> () + 112
    frame #126: 0x00000001c9b8b870 SwiftUI`SwiftUI.ViewGraph.updateOutputs() -> () + 508
    frame #127: 0x00000001ca485154 SwiftUI`closure #1 () -> () in SwiftUI.ViewRendererHost.render(interval: Swift.Double, updateDisplayList: Swift.Bool) -> () + 2284
    frame #128: 0x00000001ca472b28 SwiftUI`SwiftUI.ViewRendererHost.render(interval: Swift.Double, updateDisplayList: Swift.Bool) -> () + 388
    frame #129: 0x00000001ca4d5214 SwiftUI`closure #1 (__C.NSAnimationContext) -> () in SwiftUI.NSHostingView.layout() -> () + 212
    frame #130: 0x00000001ca4de2e8 SwiftUI`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed __C.NSAnimationContext) -> () to @escaping @callee_guaranteed (@guaranteed __C.NSAnimationContext) -> () + 28
    frame #131: 0x00000001ca4d26cc SwiftUI`reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed __C.NSAnimationContext) -> () to @callee_unowned @convention(block) (@unowned __C.NSAnimationContext) -> () + 52
    frame #132: 0x00000001a6f39e58 AppKit`+[NSAnimationContext runAnimationGroup:] + 72
    frame #133: 0x00000001ca4d50ec SwiftUI`SwiftUI.NSHostingView.layout() -> () + 324
    frame #134: 0x00000001ca4d5654 SwiftUI`@objc SwiftUI.NSHostingView.layout() -> () + 28
    frame #135: 0x00000001a6f76490 AppKit`_NSViewLayout + 688
    frame #136: 0x00000001a6f75f08 AppKit`-[NSView _layoutSubtreeWithOldSize:] + 380
    frame #137: 0x00000001a6f76074 AppKit`-[NSView _layoutSubtreeWithOldSize:] + 744
    frame #138: 0x00000001a6f75390 AppKit`-[NSView _layoutSubtreeIfNeededAndAllowTemporaryEngine:] + 996
    frame #139: 0x00000001a6f74ed8 AppKit`-[NSWindow(NSConstraintBasedLayout) _layoutViewTree] + 148
    frame #140: 0x00000001a6fec67c AppKit`-[NSWindow(NSConstraintBasedLayout) layoutIfNeeded] + 308
    frame #141: 0x00000001a6fec474 AppKit`__NSWindowGetDisplayCycleObserverForLayout_block_invoke + 436
    frame #142: 0x00000001a6feb67c AppKit`NSDisplayCycleObserverInvoke + 188
    frame #143: 0x00000001a6feb208 AppKit`NSDisplayCycleFlush + 820
    frame #144: 0x00000001ab2383ec QuartzCore`CA::Transaction::run_commit_handlers(CATransactionPhase) + 120
    frame #145: 0x00000001ab237354 QuartzCore`CA::Transaction::commit() + 328
    frame #146: 0x00000001a708969c AppKit`__62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 304
    frame #147: 0x00000001a77ee758 AppKit`___NSRunLoopObserverCreateWithHandler_block_invoke + 64
    frame #148: 0x00000001a43b81a4 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 36
    frame #149: 0x00000001a43b7ff4 CoreFoundation`__CFRunLoopDoObservers + 592
    frame #150: 0x00000001a43b7528 CoreFoundation`__CFRunLoopRun + 772
    frame #151: 0x00000001a43b6a84 CoreFoundation`CFRunLoopRunSpecific + 600
    frame #152: 0x00000001acffa338 HIToolbox`RunCurrentEventLoopInMode + 292
    frame #153: 0x00000001acff9fc4 HIToolbox`ReceiveNextEventCommon + 324
    frame #154: 0x00000001acff9e68 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 72
    frame #155: 0x00000001a6f1e51c AppKit`_DPSNextEvent + 860
    frame #156: 0x00000001a6f1ce14 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1328
    frame #157: 0x00000001a6f0efe0 AppKit`-[NSApplication run] + 596
    frame #158: 0x00000001a6ee06fc AppKit`NSApplicationMain + 1132
    frame #159: 0x00000001c993be98 SwiftUI`generic specialization <SwiftUI.TestingAppDelegate> of function signature specialization <Arg[0] = Existential To Protocol Constrained Generic> of SwiftUI.runApp(__C.NSResponder & __C.NSApplicationDelegate) -> Swift.Never + 148
    frame #160: 0x00000001ca4ca588 SwiftUI`SwiftUI.runApp<τ_0_0 where τ_0_0: SwiftUI.App>(τ_0_0) -> Swift.Never + 260
    frame #161: 0x00000001c9f4026c SwiftUI`static SwiftUI.App.main() -> () + 128
    frame #162: 0x0000000102669b98 Demo`static DemoApp.$main(self=Demo.DemoApp) at DemoApp.swift:10:1
    frame #163: 0x000000010266aec0 Demo`main at DemoApp.swift:0
    frame #164: 0x00000001029b908c dyld`start + 520
  thread #2
    frame #0: 0x00000001a42b072c libsystem_kernel.dylib`__workq_kernreturn + 8
  thread #3, queue = 'com.apple.root.utility-qos'
    frame #0: 0x00000001b17f9fdc libswiftCore.dylib`swift::equalContexts(swift::TargetContextDescriptor<swift::InProcess> const*, swift::TargetContextDescriptor<swift::InProcess> const*) + 392
    frame #1: 0x00000001b1825d68 libswiftCore.dylib`swift_conformsToProtocolMaybeInstantiateSuperclasses(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, bool)::$_5::operator()((anonymous namespace)::ConformanceSection const&) const::'lambda'(swift::TargetProtocolConformanceDescriptor<swift::InProcess> const&)::operator()(swift::TargetProtocolConformanceDescriptor<swift::InProcess> const&) const + 408
    frame #2: 0x00000001b1824a50 libswiftCore.dylib`swift_conformsToProtocolMaybeInstantiateSuperclasses(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, bool) + 2160
    frame #3: 0x00000001b1823e64 libswiftCore.dylib`swift_conformsToProtocol + 136
    frame #4: 0x00000001b17e2da0 libswiftCore.dylib`swift::_conformsToProtocol(swift::OpaqueValue const*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptorRef<swift::InProcess>, swift::TargetWitnessTable<swift::InProcess> const**) + 48
    frame #5: 0x00000001b1822ffc libswiftCore.dylib`swift::_checkGenericRequirements(__swift::__runtime::llvm::ArrayRef<swift::TargetGenericRequirementDescriptor<swift::InProcess> >, __swift::__runtime::llvm::SmallVectorImpl<void const*>&, std::__1::function<swift::TargetMetadata<swift::InProcess> const* (unsigned int, unsigned int)>, std::__1::function<swift::TargetWitnessTable<swift::InProcess> const* (swift::TargetMetadata<swift::InProcess> const*, unsigned int)>) + 1340
    frame #6: 0x00000001b182296c libswiftCore.dylib`swift::TargetProtocolConformanceDescriptor<swift::InProcess>::getWitnessTable(swift::TargetMetadata<swift::InProcess> const*) const + 320
    frame #7: 0x00000001b18248d0 libswiftCore.dylib`swift_conformsToProtocolMaybeInstantiateSuperclasses(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, bool) + 1776
    frame #8: 0x00000001b1823e64 libswiftCore.dylib`swift_conformsToProtocol + 136
    frame #9: 0x00000001ca90d53c AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 236
    frame #10: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #11: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #12: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #13: 0x00000001ca8f9e1c AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 616
    frame #14: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #15: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #16: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #17: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #18: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #19: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #20: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #21: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #22: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #23: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #24: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #25: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #26: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #27: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #28: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #29: 0x00000001ca90da4c AttributeGraph`AG::LayoutDescriptor::Builder::visit_case(AG::swift::metadata const*, AG::swift::field_record const&, unsigned int) + 756
    frame #30: 0x00000001ca8f9eec AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 824
    frame #31: 0x00000001ca90d604 AttributeGraph`AG::LayoutDescriptor::Builder::visit_element(AG::swift::metadata const*, AG::swift::metadata::ref_kind, unsigned long) + 436
    frame #32: 0x00000001ca8faa34 AttributeGraph`AG::swift::metadata_visitor::visit_field(AG::swift::metadata const*, AG::swift::field_record const&, unsigned long) + 128
    frame #33: 0x00000001ca8f9fc8 AttributeGraph`AG::swift::metadata::visit(AG::swift::metadata_visitor&) const + 1044
    frame #34: 0x00000001ca90e564 AttributeGraph`AG::LayoutDescriptor::make_layout(AG::swift::metadata const*, AGComparisonMode, AG::LayoutDescriptor::HeapMode) + 596
    frame #35: 0x00000001ca90f944 AttributeGraph`AG::(anonymous namespace)::LayoutCache::drain_queue(void*) + 152
    frame #36: 0x0000000102c323a8 libdispatch.dylib`_dispatch_client_callout + 20
    frame #37: 0x0000000102c4a210 libdispatch.dylib`_dispatch_root_queue_drain + 992
    frame #38: 0x0000000102c4abdc libdispatch.dylib`_dispatch_worker_thread2 + 196
    frame #39: 0x000000010278bf48 libsystem_pthread.dylib`_pthread_wqthread + 228
  thread #4
    frame #0: 0x00000001a42b072c libsystem_kernel.dylib`__workq_kernreturn + 8
  thread #5
    frame #0: 0x00000001a42b072c libsystem_kernel.dylib`__workq_kernreturn + 8
  thread #6, name = 'com.apple.NSEventThread'
    frame #0: 0x00000001a42ae8b0 libsystem_kernel.dylib`mach_msg_trap + 8
    frame #1: 0x00000001a42aed20 libsystem_kernel.dylib`mach_msg + 76
    frame #2: 0x00000001a43b9210 CoreFoundation`__CFRunLoopServiceMachPort + 372
    frame #3: 0x00000001a43b76c0 CoreFoundation`__CFRunLoopRun + 1180
    frame #4: 0x00000001a43b6a84 CoreFoundation`CFRunLoopRunSpecific + 600
    frame #5: 0x00000001a708b100 AppKit`_NSEventThread + 196
    frame #6: 0x0000000102789890 libsystem_pthread.dylib`_pthread_start + 148
  thread #7
    frame #0: 0x00000001a42b072c libsystem_kernel.dylib`__workq_kernreturn + 8