Hi,
We have reports from several users that our app fails to launch in the background. The app could launch in the background due to a background fetch event.
After analyzing their logs, we see the following:
[com.app.id] Provision violated for watchdog scene-create: <FBSProcessResourceProvision: 0x1108d7d10; allowance: <; FBSProcessResourceAllowance; type: scheduledTime; timeValue: 3.77s>; violated: YES>
[com.app.id] Executing termination for reason (none) with request: <FBSProcessTerminationRequest: 0x107abbfb0; label: "watchdog provision violated"; exceptionCode: "Watchdog Violation (0x8BADF00D)"; reportType: CrashLog; explanation: "scene-create watchdog transgression: com.app.id exhausted CPU time allowance of 3.77 seconds">
The app seems to be already running, since I see this:
[app:1849] Attempting to acquire assertion for app:1849: <BKProcessAssertion: 0x100735de0; "com.lapp.launch_sequence.bgtask" (finishTask:180s); id:…7A9D83D792D1>
So at some point during the launch sequence(didFinishLaunching...), we were able to request a background task assertion.
And here we get such assertion:
[app:1849] Add assertion: <BKProcessAssertion: 0x100735de0; id: 1849-FAE26CB2-AC0A-4EC6-AD1E-7A9D83D792D1; name: com.app.launch_sequence.bgtask; state: active; reason: finishTask; duration: 180.0s> {
owner = <BSProcessHandle: 0x10073a8b0; app:1849; valid: YES>;
flags = preventSuspend, preventIdleSleep, preventSuspendOnSleep;
}
Is there a way to get more information why we are just given 3.77 seconds? I thought the allowance was around 20 seconds. This is after dylib, could this mean we are taking almost 16 seconds during framework loading, and thus only left with almost 4s during didFinishLaunching?
Found the crash logs:
Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
Termination Description: SPRINGBOARD, scene-create watchdog transgression: com.app.id exhausted CPU time allowance of 3.77 seconds | | ProcessVisibility: Background | ProcessState: Running | WatchdogEvent: scene-create | WatchdogVisibility: Background | WatchdogCPUStatistics: ( | "Elapsed total CPU time (seconds): 10.270 (user 10.270, system 0.000), 57% CPU", | "Elapsed application CPU time (seconds): 5.082, 28% CPU" | )
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 CoreFoundation 0x00000001824ef088 +[NSDictionary dictionaryWithObject:forKey:] + 0
1 UIKit 0x000000018c190708 -[UIApplication _deactivateForReason:notify:] + 616
2 UIKit 0x000000018c19f948 -[UIApplication _runWithMainScene:transitionContext:completion:] + 2428
3 UIKit 0x000000018c7cfa0c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 784
4 UIKit 0x000000018c19ee4c +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 160
5 UIKit 0x000000018c19ece8 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 240
6 UIKit 0x000000018c19db78 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 724
7 UIKit 0x000000018ce3372c __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 296
8 UIKit 0x000000018c19d268 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 432
9 UIKit 0x000000018cc189b8 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 220
10 UIKit 0x000000018cd66ae8 _performActionsWithDelayForTransitionContext + 112
11 UIKit 0x000000018c19cc88 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 248
12 UIKit 0x000000018c19c624 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 368
13 UIKit 0x000000018c19965c -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 540
14 UIKit 0x000000018c1993ac -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 364
15 FrontBoardServices 0x0000000184e00470 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 364
16 FrontBoardServices 0x0000000184e08d6c __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 224
17 libdispatch.dylib 0x0000000181ef4ae4 _dispatch_client_callout + 16
18 libdispatch.dylib 0x0000000181efc1f4 _dispatch_block_invoke_direct$VARIANT$mp + 224
19 FrontBoardServices 0x0000000184e34878 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 36
20 FrontBoardServices 0x0000000184e3451c -[FBSSerialQueue _performNext] + 404
21 FrontBoardServices 0x0000000184e34ab8 -[FBSSerialQueue _performNextFromRunLoopSource] + 56
22 CoreFoundation 0x00000001825ab404 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
23 CoreFoundation 0x00000001825aac2c __CFRunLoopDoSources0 + 276
24 CoreFoundation 0x00000001825a879c __CFRunLoopRun + 1204
25 CoreFoundation 0x00000001824c8da8 CFRunLoopRunSpecific + 552
26 GraphicsServices 0x00000001844ab020 GSEventRunModal + 100
27 UIKit 0x000000018c4a978c UIApplicationMain + 236