iOS 15 - Frequently stuck at [CLLocationManager locationServicesEnabled]

After updating to iOS 15, many of our customers are experiencing the hanging issue at [CLLocationManager locationServicesEnabled].

#0	(null) in objc_msgSend ()
#1	(null) in resolveInstanceMethod(objc_object*, objc_selector*, objc_class*) ()
#2	(null) in resolveMethod_locked(objc_object*, objc_selector*, objc_class*, int) ()
#3	(null) in class_getInstanceMethod ()
#4	(null) in setProtocolMetdataWithMethods ()
#5	(null) in setProtocolMetadata ()
#6	(null) in -[NSXPCInterface setProtocol:] ()
#7	(null) in +[NSXPCInterface interfaceWithProtocol:] ()
#8	(null) in -[CLLocationInternalClient connection] ()
#9	(null) in -[CLLocationInternalClient synchronousRemoteObject] ()
#10	(null) in -[CLLocationInternalClient getLocationServicesEnabled:] ()
#11	(null) in CLClientIsLocationServicesEnabled ()
#12	(null) in +[CLLocationManager locationServicesEnabled] ()
#13	0x0000000100a014cc in -[SWLocationManager startUpdatingLocation:] at /Users/chuh/git/isharing/ios/iSharing/SWLocationManager.m:669
#14	0x0000000100a0140c in -[SWLocationManager startBackgroundLocationManager:] at /Users/chuh/git/isharing/ios/iSharing/SWLocationManager.m:652
#15	0x000000010094bf98 in -[AppDelegate application:didFinishLaunchingWithOptions:] at /Users/chuh/git/isharing/ios/iSharing/AppDelegate.m:224
#16	(null) in -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] ()
#17	(null) in -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] ()
#18	(null) in -[UIApplication _runWithMainScene:transitionContext:completion:] ()
#19	(null) in -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] ()
#20	(null) in _UIScenePerformActionsWithLifecycleActionMask ()
#21	(null) in __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke ()
#22	(null) in -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] ()
#23	(null) in -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] ()
#24	(null) in -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] ()
#25	(null) in __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block... ()
#26	(null) in +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:] ()
#27	(null) in _UISceneSettingsDiffActionPerformChangesWithTransitionContext ()
#28	(null) in -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] ()
#29	(null) in __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.571 ()
#30	(null) in -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] ()
#31	(null) in -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] ()
#32	(null) in -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] ()
#33	(null) in -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] ()
#34	(null) in -[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:] ()
#35	(null) in __94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke.180 ()
#36	(null) in -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] ()
#37	(null) in __94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke ()
#38	(null) in _dispatch_client_callout ()
#39	(null) in _dispatch_block_invoke_direct$VARIANT$mp ()
#40	(null) in __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ ()
#41	(null) in -[FBSSerialQueue _targetQueue_performNextIfPossible] ()
#42	(null) in -[FBSSerialQueue _performNextFromRunLoopSource] ()
#43	(null) in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#44	(null) in __CFRunLoopDoSource0 ()
#45	(null) in __CFRunLoopDoSources0 ()
#46	(null) in __CFRunLoopRun ()
#47	(null) in CFRunLoopRunSpecific ()
#48	(null) in GSEventRunModal ()
#49	(null) in -[UIApplication _run] ()
#50	(null) in UIApplicationMain ()
#51	0x000000010094b24c in main at /Users/chuh/git/isharing/ios/iSharing/main.m:15
#52	(null) in start ()

I am also having the same issue. how did you solve that?

This method can cause UI unresponsiveness if invoked on the main thread.
Instead, consider waiting for the -locationManagerDidChangeAuthorization: callback and checking authorizationStatus first.

iOS 15 - Frequently stuck at [CLLocationManager locationServicesEnabled]
 
 
Q