Skip to content

ASDN::SharedLocker destructor crash #692

@anuragt84

Description

@anuragt84

Texture v2.5

Happens on iOS 10 and 11

We have nodes of varying sizes in an ASCollectionNode. Nodes are added/updated/deleted based on realm notifications.

Stack trace from Crashalytics

Crashed: com.apple.root.default-qos
0 libsystem_kernel.dylib 0x181725348 __pthread_kill + 8
1 libsystem_pthread.dylib 0x181839344 pthread_kill$VARIANT$mp + 396
2 libsystem_c.dylib 0x181694fb8 abort + 140
3 libsystem_c.dylib 0x181668a9c basename_r + 314
4 AsyncDisplayKit 0x1027f9cf0 ASDN::SharedLockerASDN::Mutex::~SharedLocker() (ASThread.h:149)
5 AsyncDisplayKit 0x10281690c -[ASTextKitContext initWithAttributedString:lineBreakMode:maximumNumberOfLines:exclusionPaths:constrainedSize:] (memory:4810)
6 AsyncDisplayKit 0x102867200 -[ASTextKitRenderer initWithTextKitAttributes:constrainedSize:] (ASTextKitRenderer.mm:69)
7 AsyncDisplayKit 0x1028cce0c rendererForAttributes(ASTextKitAttributes, CGSize) (ASTextNode.mm:120)
8 AsyncDisplayKit 0x1028cdcec -[ASTextNode _locked_rendererWithBounds:] (ASTextNode.mm:330)
9 AsyncDisplayKit 0x1028ce058 -[ASTextNode calculateSizeThatFits:] (ASTextNode.mm:384)
10 AsyncDisplayKit 0x102857c2c -[ASDisplayNode calculateLayoutThatFits:] (ASDisplayNode.mm:993)
11 AsyncDisplayKit 0x102857b0c -[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASDisplayNode.mm:948)
12 AsyncDisplayKit 0x1028a3cd0 -[ASDisplayNode(ASLayoutElement) layoutThatFits:parentSize:] (ASDisplayNode+Layout.mm:85)
13 AsyncDisplayKit 0x10286ea88 crossChildLayout(ASStackLayoutSpecChild const&, ASStackLayoutSpecStyle const&, double, double, double, double, CGSize) (ASStackUnpositionedLayout.mm:73)
14 AsyncDisplayKit 0x10286e7bc invocation function for block in layoutItemsAlongUnconstrainedStackDimension(std::__1::vector<ASStackLayoutSpecItem, std::__1::allocator >&, ASStackLayoutSpecStyle const&, bool, ASSizeRange const&, CGSize, bool) (ASStackUnpositionedLayout.mm:697)
15 AsyncDisplayKit 0x10286e618 dispatchApplyIfNeeded(unsigned long, bool, void (unsigned long) block_pointer) (ASStackUnpositionedLayout.mm:91)
16 AsyncDisplayKit 0x10286d7e4 ASStackUnpositionedLayout::compute(std::__1::vector<ASStackLayoutSpecChild, std::__1::allocator > const&, ASStackLayoutSpecStyle const&, ASSizeRange const&, bool) (ASStackUnpositionedLayout.mm:644)
17 AsyncDisplayKit 0x1028ad544 -[ASStackLayoutSpec calculateLayoutThatFits:] (ASStackLayoutSpec.mm:156)
18 AsyncDisplayKit 0x10288e30c -[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASLayoutSpec.mm:87)
19 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
20 AsyncDisplayKit 0x10286ea88 crossChildLayout(ASStackLayoutSpecChild const&, ASStackLayoutSpecStyle const&, double, double, double, double, CGSize) (ASStackUnpositionedLayout.mm:73)
21 AsyncDisplayKit 0x10286e7bc invocation function for block in layoutItemsAlongUnconstrainedStackDimension(std::__1::vector<ASStackLayoutSpecItem, std::__1::allocator >&, ASStackLayoutSpecStyle const&, bool, ASSizeRange const&, CGSize, bool) (ASStackUnpositionedLayout.mm:697)
22 AsyncDisplayKit 0x10286e5c4 dispatchApplyIfNeeded(unsigned long, bool, void (unsigned long) block_pointer) (ASStackUnpositionedLayout.mm:85)
23 AsyncDisplayKit 0x10286d7e4 ASStackUnpositionedLayout::compute(std::__1::vector<ASStackLayoutSpecChild, std::__1::allocator > const&, ASStackLayoutSpecStyle const&, ASSizeRange const&, bool) (ASStackUnpositionedLayout.mm:644)
24 AsyncDisplayKit 0x1028ad544 -[ASStackLayoutSpec calculateLayoutThatFits:] (ASStackLayoutSpec.mm:156)
25 AsyncDisplayKit 0x10288e30c -[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASLayoutSpec.mm:87)
26 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
27 AsyncDisplayKit 0x10286ea88 crossChildLayout(ASStackLayoutSpecChild const&, ASStackLayoutSpecStyle const&, double, double, double, double, CGSize) (ASStackUnpositionedLayout.mm:73)
28 AsyncDisplayKit 0x10286e7bc invocation function for block in layoutItemsAlongUnconstrainedStackDimension(std::__1::vector<ASStackLayoutSpecItem, std::__1::allocator >&, ASStackLayoutSpecStyle const&, bool, ASSizeRange const&, CGSize, bool) (ASStackUnpositionedLayout.mm:697)
29 AsyncDisplayKit 0x10286e618 dispatchApplyIfNeeded(unsigned long, bool, void (unsigned long) block_pointer) (ASStackUnpositionedLayout.mm:91)
30 AsyncDisplayKit 0x10286d7e4 ASStackUnpositionedLayout::compute(std::__1::vector<ASStackLayoutSpecChild, std::__1::allocator > const&, ASStackLayoutSpecStyle const&, ASSizeRange const&, bool) (ASStackUnpositionedLayout.mm:644)
31 AsyncDisplayKit 0x1028ad544 -[ASStackLayoutSpec calculateLayoutThatFits:] (ASStackLayoutSpec.mm:156)
32 AsyncDisplayKit 0x10288e30c -[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASLayoutSpec.mm:87)
33 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
34 AsyncDisplayKit 0x10286ea88 crossChildLayout(ASStackLayoutSpecChild const&, ASStackLayoutSpecStyle const&, double, double, double, double, CGSize) (ASStackUnpositionedLayout.mm:73)
35 AsyncDisplayKit 0x10286f1c0 invocation function for block in flexLinesAlongStackDimension(std::__1::vector<ASStackUnpositionedLine, std::__1::allocator >&, ASStackLayoutSpecStyle const&, bool, ASSizeRange const&, CGSize, bool) (ASStackUnpositionedLayout.mm:624)
36 AsyncDisplayKit 0x10286e618 dispatchApplyIfNeeded(unsigned long, bool, void (unsigned long) block_pointer) (ASStackUnpositionedLayout.mm:91)
37 AsyncDisplayKit 0x10286dd64 ASStackUnpositionedLayout::compute(std::__1::vector<ASStackLayoutSpecChild, std::__1::allocator > const&, ASStackLayoutSpecStyle const&, ASSizeRange const&, bool) (functional:1860)
38 AsyncDisplayKit 0x1028ad544 -[ASStackLayoutSpec calculateLayoutThatFits:] (ASStackLayoutSpec.mm:156)
39 AsyncDisplayKit 0x10288e30c -[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASLayoutSpec.mm:87)
40 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
41 AsyncDisplayKit 0x102873964 -[ASInsetLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASInsetLayoutSpec.mm:110)
42 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
43 AsyncDisplayKit 0x10286ea88 crossChildLayout(ASStackLayoutSpecChild const&, ASStackLayoutSpecStyle const&, double, double, double, double, CGSize) (ASStackUnpositionedLayout.mm:73)
44 AsyncDisplayKit 0x10286e7bc invocation function for block in layoutItemsAlongUnconstrainedStackDimension(std::__1::vector<ASStackLayoutSpecItem, std::__1::allocator >&, ASStackLayoutSpecStyle const&, bool, ASSizeRange const&, CGSize, bool) (ASStackUnpositionedLayout.mm:697)
45 AsyncDisplayKit 0x10286e5c4 dispatchApplyIfNeeded(unsigned long, bool, void (unsigned long) block_pointer) (ASStackUnpositionedLayout.mm:85)
46 AsyncDisplayKit 0x10286d7e4 ASStackUnpositionedLayout::compute(std::__1::vector<ASStackLayoutSpecChild, std::__1::allocator > const&, ASStackLayoutSpecStyle const&, ASSizeRange const&, bool) (ASStackUnpositionedLayout.mm:644)
47 AsyncDisplayKit 0x1028ad544 -[ASStackLayoutSpec calculateLayoutThatFits:] (ASStackLayoutSpec.mm:156)
48 AsyncDisplayKit 0x10288e30c -[ASLayoutSpec calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASLayoutSpec.mm:87)
49 AsyncDisplayKit 0x10288e1a8 -[ASLayoutSpec layoutThatFits:parentSize:] (ASLayoutSpec.mm:87)
50 AsyncDisplayKit 0x102857d9c -[ASDisplayNode calculateLayoutThatFits:] (ASDisplayNode.mm:1043)
51 AsyncDisplayKit 0x102857b0c -[ASDisplayNode calculateLayoutThatFits:restrictedToSize:relativeToParentSize:] (ASDisplayNode.mm:948)
52 AsyncDisplayKit 0x1028a3cd0 -[ASDisplayNode(ASLayoutElement) layoutThatFits:parentSize:] (ASDisplayNode+Layout.mm:85)
53 AsyncDisplayKit 0x10283c244 -[ASDataController _layoutNode:withConstrainedSize:] (ASDataController.mm:191)
54 AsyncDisplayKit 0x10283c120 __58-[ASDataController _allocateNodesFromElements:completion:]_block_invoke (ASDataController.mm:176)
55 AsyncDisplayKit 0x1028ae6ec __ASDispatchApply_block_invoke (ASDispatch.m:31)
56 libdispatch.dylib 0x181591088 _dispatch_call_block_and_release + 24
57 libdispatch.dylib 0x181591048 _dispatch_client_callout + 16
58 libdispatch.dylib 0x181598160 _dispatch_queue_override_invoke$VARIANT$mp + 924
59 libdispatch.dylib 0x18159e1c8 _dispatch_root_queue_drain + 596
60 libdispatch.dylib 0x18159df10 _dispatch_worker_thread3 + 120
61 libsystem_pthread.dylib 0x181837120 _pthread_wqthread + 1268
62 libsystem_pthread.dylib 0x181836c20 start_wqthread + 4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions