AztecEditor-iOS
AztecEditor-iOS copied to clipboard
Crash in LayoutManager.underlineGlyphRange
Describe the bug
Our users experience crashes that for now we are unable to reproduce. The stack trace of the crash is below.
Is there any ways to make this method safer and do some safety checks for glyphRange?
Fatal Exception: NSRangeException
0 CoreFoundation 0xec69c __exceptionPreprocess
1 libobjc.A.dylib 0x2bc80 objc_exception_throw
2 Foundation 0x84118 -[NSAttributedString attributedSubstringFromRange:]
3 Pipedrive 0x7f4da0 LayoutManager.underlineGlyphRange(_:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:) + 369 (LayoutManager.swift:369)
4 Pipedrive 0x7f4f9c @objc LayoutManager.underlineGlyphRange(_:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:) (<compiler-generated>)
5 UIFoundation 0x59168 -[NSLayoutManager(NSPrivate) _drawGlyphsForGlyphRange:atPoint:]
6 UIFoundation 0x10b20 -[NSTextStorage coordinateReading:]
7 UIKitCore 0x10be344 -[_UITextViewCanvasView drawTextInRect:]
8 UIKitCore 0x10bdf50 -[_UITextCanvasView drawRect:]
9 UIKitCore 0x15ac80 -[UIView(CALayerDelegate) drawLayer:inContext:]
10 UIKitCore 0x10bf578 -[_UITextTiledLayer _drawInContext:offset:clip:]
11 UIKitCore 0x10bf254 -[_UITileLayer drawInContext:]
12 QuartzCore 0x68074 CABackingStoreUpdate_
13 QuartzCore 0x67f6c invocation function for block in CA::Layer::display_()
14 QuartzCore 0x67424 -[CALayer _display]
15 QuartzCore 0x6673c CA::Layer::layout_and_display_if_needed(CA::Transaction*)
16 QuartzCore 0x6cb60 CA::Context::commit_transaction(CA::Transaction*, double, double*)
17 QuartzCore 0x65e3c CA::Transaction::commit()
18 UIKitCore 0xe19970 __83-[UIApplication _createSnapshotContextForScene:withName:performLayoutWithSettings:]_block_invoke_4
19 UIKitCore 0xe190a0 -[UIApplication _performWithUICACommitStateSnapshotting:]
20 UIKitCore 0xe198e0 __83-[UIApplication _createSnapshotContextForScene:withName:performLayoutWithSettings:]_block_invoke_2
21 UIKitCore 0x41a70 +[UIView(Animation) performWithoutAnimation:]
22 UIKitCore 0xe196cc __83-[UIApplication _createSnapshotContextForScene:withName:performLayoutWithSettings:]_block_invoke
23 UIKitCore 0x4bbc08 -[UIScene _applyOverrideSettings:forActions:]
24 UIKitCore 0x1035f4c -[UIWindowScene _applySnapshotSettings:forActions:]
25 UIKitCore 0xe195ac -[UIApplication _createSnapshotContextForScene:withName:performLayoutWithSettings:]
26 UIKitCore 0xe1a794 __65-[UIApplication _performSnapshotsWithAction:forScene:completion:]_block_invoke_3
27 FrontBoardServices 0x6692c -[FBSSceneSnapshotAction _executeNextRequest]
28 FrontBoardServices 0x66948 -[FBSSceneSnapshotAction _executeNextRequest]
29 FrontBoardServices 0x663c0 -[FBSSceneSnapshotAction executeRequestsWithHandler:completionHandler:expirationHandler:]
30 UIKitCore 0xe1a6e4 __65-[UIApplication _performSnapshotsWithAction:forScene:completion:]_block_invoke_2
31 UIKitCore 0xe19f98 -[UIApplication _beginSnapshotSessionForScene:withSnapshotBlock:]
32 UIKitCore 0xe1a594 __65-[UIApplication _performSnapshotsWithAction:forScene:completion:]_block_invoke
33 UIKitCore 0x4bbb14 -[UIScene _enableOverrideSettingsForActions:]
34 UIKitCore 0x4bbd2c -[UIScene _performSystemSnapshotWithActions:]
35 UIKitCore 0xe1a410 -[UIApplication _performSnapshotsWithAction:forScene:completion:]
36 UIKitCore 0x12dfd38 __98-[_UISceneSnapshotBSActionsHandler _respondToActions:forFBSScene:inUIScene:fromTransitionContext:]_block_invoke_3
37 UIKitCore 0x12dfbbc __98-[_UISceneSnapshotBSActionsHandler _respondToActions:forFBSScene:inUIScene:fromTransitionContext:]_block_invoke_2
38 UIKitCore 0x1375c8 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:]
39 UIKitCore 0x1372c4 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:]
40 UIKitCore 0x137104 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:]
41 FrontBoardServices 0xe5b4 -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:]
42 FrontBoardServices 0xe300 __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2
43 FrontBoardServices 0xe19c -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:]
44 FrontBoardServices 0xe0b8 __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke
45 libdispatch.dylib 0x4300 _dispatch_client_callout
46 libdispatch.dylib 0x7d48 _dispatch_block_invoke_direct
47 FrontBoardServices 0xa520 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__
48 FrontBoardServices 0xa4a0 -[FBSMainRunLoopSerialQueue _targetQueue_performNextIfPossible]
49 FrontBoardServices 0xa378 -[FBSMainRunLoopSerialQueue _performNextFromRunLoopSource]
50 CoreFoundation 0x3712c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
51 CoreFoundation 0x363a8 __CFRunLoopDoSource0
52 CoreFoundation 0x34b5c __CFRunLoopDoSources0
53 CoreFoundation 0x33898 __CFRunLoopRun
54 CoreFoundation 0x33478 CFRunLoopRunSpecific
55 GraphicsServices 0x34f8 GSEventRunModal
56 UIKitCore 0x22c62c -[UIApplication _run]
57 UIKitCore 0x22bc68 UIApplicationMain
58 Pipedrive 0x84124 main + 19 (main.m:19)
59 ??? 0x1b4ab2dcc (Missing)
Smartphone (please complete the following information):
- Device: range of iPhones from iPhone 11 up to the modern ones
- OS: iOS17+
I assume this was fixed by https://github.com/wordpress-mobile/AztecEditor-iOS/pull/1384