Please replace this with the steps to reproduce the behavior.
I run my app FROM xCode (it's important) and login them (main screen with a lot of skeleton views)
Turn my app in Background and wait some time (pin code after that appear)
Run my app from Push notification. My main screen is deinited, use see pin screen.
User enter pin screen
User see main screen with a lot of skeleton
Crash appear.
If i make this steps in iOS simulator 17.2, all work fine. If i run app from simulator as normal app (not from xCode), all work fine too
Expected result:
All work fine
Actual result:
Crash
Attachments:
Log may be different once in a while. But in the end it's always show UIView.unSwizzleTraitCollectionDidChange()-> swizzle(selector:with:inClass:usingClass:) -> method_exchangeImplementations
#0 0x000000010c615a84 in cache_getImp ()
#1 0x000000010c627e06 in __method_exchangeImplementations_block_invoke ()
#2 0x000000010c62063f in invocation function for block in flushCaches(objc_class*, char const*, bool (objc_class*) block_pointer) ()
#3 0x000000010c6205b9 in flushCaches ()
#4 0x000000010c627d81 in method_exchangeImplementations ()
Crash sting >>>>>#5 0x000000010fc4f14c in swizzle(selector:with:inClass:usingClass:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/Helpers/Swizzling.swift:13 <<<< Crash string
#6 0x000000010fc7f4fa in closure #1 in closure #1 in UIView.unSwizzleTraitCollectionDidChange() at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/UIKitExtensions/UIView+Swizzling.swift:68
#7 0x000000010fc4dad4 in static OS_dispatch_queue.removeOnce(token:block:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/FoundationExtensions/DispatchQueue+Extensions.swift:34
#8 0x000000010fc7f45a in closure #1 in UIView.unSwizzleTraitCollectionDidChange() at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/UIKitExtensions/UIView+Swizzling.swift:67
#9 0x000000010fc42658 in thunk for @escaping @callee_guaranteed () -> () ()
#10 0x0000000116e21ec6 in _dispatch_client_callout ()
#11 0x0000000116e250f3 in _dispatch_continuation_pop ()
#12 0x0000000116e3ad0d in _dispatch_source_invoke ()
#13 0x0000000116e31b8b in _dispatch_main_queue_drain ()
#14 0x0000000116e317c2 in _dispatch_main_queue_callback_4CF ()
#15 0x0000000112fe9995 in __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ ()
#16 0x0000000112fe40e5 in __CFRunLoopRun ()
#17 0x0000000112fe32d1 in CFRunLoopRunSpecific ()
#18 0x000000012c1490cb in GSEventRunModal ()
#19 0x00000001523be490 in -[UIApplication _run] ()
#20 0x00000001523c33d1 in UIApplicationMain ()
#21 0x00000001513424e3 in UIKit.UIApplicationMain(Swift.Int32, Swift.Optional<Swift.UnsafeMutablePointer<Swift.UnsafeMutablePointer<Swift.Int8>>>, Swift.Optional<Swift.String>, Swift.Optional<Swift.String>) -> Swift.Int32 ()
#22 0x000000010cf8499b in static UIApplicationDelegate.main() ()
#23 0x000000010cf84917 in static AppDelegate.$main() ()
#24 0x000000010cf8570b in main at /PATH_TO_WORKING_DIR/AppDelegate.swift:23
#25 0x000000010a9d9478 in start_sim ()
#26 0x00000002026772cd in start ()
Enqueued from com.apple.main-thread (Thread 1) Queue : com.apple.main-thread (serial)
#0 0x0000000116e3bc76 in dispatch_after ()
#1 0x000000010f943f8b in _swift_dispatch_after ()
#2 0x000000010f94329c in merged __C.OS_dispatch_queue._asyncAfterUnsafeHelper(deadline: Dispatch.DispatchTime, qos: Dispatch.DispatchQoS, flags: Dispatch.DispatchWorkItemFlags, execute: @convention(block) () -> ()) -> () ()
#3 0x000000010f9431b6 in merged __C.OS_dispatch_queue.asyncAfterUnsafe(deadline: Dispatch.DispatchTime, qos: Dispatch.DispatchQoS, flags: Dispatch.DispatchWorkItemFlags, execute: @convention(block) () -> ()) -> () ()
#4 0x000000010fc7f3b6 in UIView.unSwizzleTraitCollectionDidChange() at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/UIKitExtensions/UIView+Swizzling.swift:66
#5 0x000000010fc7de5a in UIView.recursiveHideSkeleton(reloadDataAfter:transition:root:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/Internal/UIKitExtensions/UIView+SkeletonView.swift:68
#6 0x000000010fc4396f in UIView.hideSkeleton(reloadDataAfter:transition:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/SkeletonView/SkeletonViewCore/Sources/API/SkeletonView.swift:136
#7 0x000000010ed5f74e in BaseRecommendationCell.showLoadingAnimation(_:) at /PATH_TO_PROJECT_DIR/mobile-ios/CommonUI/CommonUI/BaseComponents/BaseRecommendationCell.swift:97
#8 0x000000010cf6f9b2 in closure #1 in closure #1 in RecommendationModule.RecommendationModuleViewController.dataSource.getter at /PATH_TO_WORKING_DIR/Modules/MainTabs/Market/RecommendationModule/RecommendationViewController.swift:73
#9 0x000000011020bc18 in CollectionViewSectionedDataSource.collectionView(_:cellForItemAt:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/RxDataSources/Sources/RxDataSources/CollectionViewSectionedDataSource.swift:140
#10 0x000000011020bcf5 in @objc CollectionViewSectionedDataSource.collectionView(_:cellForItemAt:) ()
#11 0x000000010fce6658 in RxCollectionViewDataSourceProxy.collectionView(_:cellForItemAt:) at /PATH_TO_RUN_DIR/SourcePackages/checkouts/RxSwift/Sources/RxCocoa/RxCollectionViewDataSourceProxy.swift:71
#12 0x000000010fce6715 in @objc RxCollectionViewDataSourceProxy.collectionView(_:cellForItemAt:) ()
#13 0x000000015175bbe5 in __112-[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:]_block_invoke.968 ()
#14 0x0000000152af8037 in +[UIView(Animation) performWithoutAnimation:] ()
#15 0x000000015175aea8 in -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] ()
#16 0x000000015175a8e5 in -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:] ()
#17 0x0000000151767836 in -[UICollectionView _createVisibleViewsForSingleCategoryAttributes:limitCreation:fadeForBoundsChange:] ()
#18 0x0000000151767d41 in -[UICollectionView _createVisibleViewsForAttributes:fadeForBoundsChange:notifyLayoutForVisibleCellsPass:] ()
#19 0x00000001517654cf in -[UICollectionView _updateVisibleCellsNow:] ()
#20 0x000000015176c971 in -[UICollectionView layoutSubviews] ()
#21 0x0000000152b04029 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:] ()
#22 0x000000010c85d02b in CA::Layer::layout_if_needed ()
#23 0x0000000152af084d in -[UIView(Hierarchy) layoutBelowIfNeeded] ()
#24 0x0000000152af8037 in +[UIView(Animation) performWithoutAnimation:] ()
#25 0x00000001526e0ed6 in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] ()
#26 0x00000001526a4953 in -[UITableView _updateVisibleCellsForRanges:createIfNecessary:] ()
#27 0x00000001526a525c in -[UITableView _updateVisibleCellsNow:] ()
#28 0x00000001526c7abb in -[UITableView layoutSubviews] ()
#29 0x0000000152b04029 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:] ()
#30 0x000000010c85d02b in CA::Layer::layout_if_needed ()
#31 0x000000010c869307 in CA::Layer::layout_and_display_if_needed ()
#32 0x000000010c7811bd in CA::Context::commit_transaction ()
#33 0x000000010c7bb9f2 in CA::Transaction::commit ()
#34 0x000000010c7bcf46 in CA::Transaction::flush_as_runloop_observer ()
#35 0x00000001523bcbe6 in _UIApplicationFlushCATransaction ()
#36 0x00000001522a40b2 in __setupUpdateSequence_block_invoke_2 ()
#37 0x000000015155e1b4 in _UIUpdateSequenceRun ()
#38 0x00000001522a39ef in schedulerStepScheduledMainSection ()
#39 0x00000001522a2b14 in runloopSourceCallback ()
#40 0x0000000112fe9e54 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#41 0x0000000112fe9d96 in __CFRunLoopDoSource0 ()
#42 0x0000000112fe959b in __CFRunLoopDoSources0 ()
#43 0x0000000112fe3ad2 in __CFRunLoopRun ()
#44 0x0000000112fe32d1 in CFRunLoopRunSpecific ()
#45 0x000000012c1490cb in GSEventRunModal ()
#46 0x00000001523be490 in -[UIApplication _run] ()
#47 0x00000001523c33d1 in UIApplicationMain ()
#48 0x00000001513424e3 in UIKit.UIApplicationMain(Swift.Int32, Swift.Optional<Swift.UnsafeMutablePointer<Swift.UnsafeMutablePointer<Swift.Int8>>>, Swift.Optional<Swift.String>, Swift.Optional<Swift.String>) -> Swift.Int32 ()
#49 0x000000010cf8499b in static UIApplicationDelegate.main() ()
#50 0x000000010cf84917 in static AppDelegate.$main() ()
#51 0x000000010cf8570b in main at /PATH_TO_WORKING_DIR/AppDelegate.swift:23
#52 0x000000010a9d9478 in start_sim ()
#53 0x00000002026772cd in start ()
Description
Permanent crash on iOS 18.x when i run debug version from xCode
What type of issue is this? (place an
x
in one of the[ ]
)Requirements (place an
x
in each of the[ ]
)Bug Report
Filling out the following details about bugs will help us solve your issue sooner.
SkeletonView Environment:
SkeletonView version:1.31.0 Xcode version:16.1 Swift version:unspecified
Steps to reproduce:
Please replace this with the steps to reproduce the behavior.
If i make this steps in iOS simulator 17.2, all work fine. If i run app from simulator as normal app (not from xCode), all work fine too
Expected result:
All work fine
Actual result:
Crash
Attachments:
Log may be different once in a while. But in the end it's always show
UIView.unSwizzleTraitCollectionDidChange()-> swizzle(selector:with:inClass:usingClass:) -> method_exchangeImplementations