Optimized Frame Pacing - Freezes/Crashing on Android 6.0 and earlier

We’re encountering a wave of bug reports from users on Android 4.4 - Android 6.0 devices on Unity 2019.13 with Optimized Frame Pacing switched on.

We’ve been able to replicate a black screen crash on Android 4.4 as a DIRECT result of turning on Optimized Frame Pacing, which is immediately resolved by toggling off the setting in a new build. Other player reports note that they can play for 5-10 minutes before experiencing freezes that are only fixed by restarting.

Here’s a crash report on start for Android 4.4 running on Galaxy Tab 3:

SwappyCommon could not initialize correctly.
E/Swappy  ( 8318): Failed to initialize SwappyGL
E/CRASH   ( 8318): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
E/CRASH   ( 8318): Version '2019.3.14f1 (2b330bf6d2d8)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'armeabi-v7a'
E/CRASH   ( 8318): Build fingerprint: 'samsung/lt01wifixx/lt01wifi:4.4.2/KOT49H/T310XXUBNH3:user/release-keys'
E/CRASH   ( 8318): Revision: '6'
E/CRASH   ( 8318): ABI: 'arm'
E/CRASH   ( 8318): Timestamp: 2012-01-01 16:44:56+1300
E/CRASH   ( 8318): pid: 8318, tid: 8385, name: UnityMain  >>> com.app <<<
E/CRASH   ( 8318): uid: 10425
E/CRASH   ( 8318): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
E/CRASH   ( 8318): Cause: null pointer dereference
E/CRASH   ( 8318):     r0  00000000  r1  00000000  r2  00000000  r3  3e050a53
E/CRASH   ( 8318):     r4  6986a040  r5  00000000  r6  641b8d44  r7  1d20043a
E/CRASH   ( 8318):     r8  643fc904  r9  643fd240  r10 643fd66c  r11 643fd67c
E/CRASH   ( 8318):     ip  00000003  sp  643fc868  lr  63c7cf6d  pc  63c7cf74
E/CRASH   ( 8318):
E/CRASH   ( 8318): backtrace:
E/CRASH   ( 8318):       #10 pc 0004efab  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
E/CRASH   ( 8318):       #11 pc 00027e20  /system/lib/libdvm.so
E/CRASH   ( 8318):       #12 pc 0002ee04  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
E/CRASH   ( 8318):       #13 pc 0002c49c  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
E/CRASH   ( 8318):       #14 pc 00061409  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
E/CRASH   ( 8318):       #15 pc 0006142d  /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
E/CRASH   ( 8318):       #16 pc 00056107  /system/lib/libdvm.so
E/CRASH   ( 8318):       #17 pc 0000d298  /system/lib/libc.so (__thread_entry+72)
E/CRASH   ( 8318):       #18 pc 0000d430  /system/lib/libc.so (pthread_create+240)

Hi!
Can you please report a bug?
Thanks!

The tool used to optimise frame pacing was upgraded in 2019.3.14f1. Before submitting a bug, please make sure it is also reproducible with 2019.3.14f1 or newer version. Thank you.

Hi Julius, will do. But as a heads up, that crash occurred on 2019.3.14f1 as you can see in the adb logs of the crash above.

It seems on 2019.3.14f1 turn on Frame Pacing will crash all the Android 4.4(SDK 19) devices. here is the stack:
05-27 10:51:18.355 I/SwappyCommon(15544): Swappy version 1.3
05-27 10:51:18.355 I/SwappyCommon(15544): SDK version = 19
05-27 10:51:18.365 E/SwappyCommon(15544): Error while getting method: getAppVsyncOffsetNanos
05-27 10:51:18.365 E/Swappy (15544): SwappyCommon could not initialize correctly.
05-27 10:51:18.365 E/Swappy (15544): Failed to initialize SwappyGL
05-27 10:51:18.365 E/CRASH (15544): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-27 10:51:18.365 E/CRASH (15544): Version ‘2019.3.14f1 (2b330bf6d2d8)’, Build type ‘Release’, Scripting Backend ‘il2cpp’, CPU ‘armeabi-v7a’
05-27 10:51:18.365 E/CRASH (15544): Build fingerprint: ‘samsung/fortunaltezm/fortunalte:4.4.4/KTU84P/G5308WZMU1AQA2:user/release-keys’
05-27 10:51:18.365 E/CRASH (15544): Revision: ‘11’
05-27 10:51:18.365 E/CRASH (15544): ABI: ‘arm’
05-27 10:51:18.365 E/CRASH (15544): Timestamp: 2020-05-27 10:51:18+0800
05-27 10:51:18.365 E/CRASH (15544): pid: 15544, tid: 15557, name: UnityMain >>> com.fptestproject.rts <<<
05-27 10:51:18.365 E/CRASH (15544): uid: 10980
05-27 10:51:18.365 E/CRASH (15544): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
05-27 10:51:18.365 E/CRASH (15544): Cause: null pointer dereference
05-27 10:51:18.365 E/CRASH (15544): r0 00000000 r1 00000000 r2 00000000 r3 dd267309
05-27 10:51:18.365 E/CRASH (15544): r4 68baa020 r5 00000000 r6 61582138 r7 1d20041e
05-27 10:51:18.365 E/CRASH (15544): r8 617dc904 r9 617dd240 r10 617dd66c r11 617dd67c
05-27 10:51:18.365 E/CRASH (15544): ip 00000003 sp 617dc868 lr 60fa4915 pc 60fa491c
05-27 10:51:18.365 E/CRASH (15544):
05-27 10:51:18.365 E/CRASH (15544): backtrace:
05-27 10:51:18.365 E/CRASH (15544): #00 pc 00a0a91c /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #01 pc 00a0d8e9 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #02 pc 00413897 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #03 pc 0042a54b /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #04 pc 0041f0c7 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #05 pc 0042d7e5 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #06 pc 00420585 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #07 pc 00420fd9 /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #08 pc 0042e9dd /data/app-lib/com.fptestproject.rts-1/libunity.so (BuildId: 7fcbc94940d5a992c94b6adab49d34d659b602b5)
05-27 10:51:18.365 E/CRASH (15544): #09 pc 0002074c /system/lib/libdvm.so (dvmPlatformInvoke+112)
05-27 10:51:18.365 E/CRASH (15544): #10 pc 000513f7 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
05-27 10:51:18.365 E/CRASH (15544): #11 pc 00029be0 /system/lib/libdvm.so
05-27 10:51:18.365 E/CRASH (15544): #12 pc 00031090 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
05-27 10:51:18.365 E/CRASH (15544): #13 pc 0002e728 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
05-27 10:51:18.365 E/CRASH (15544): #14 pc 00063859 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
05-27 10:51:18.365 E/CRASH (15544): #15 pc 0006387d /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, …)+20)
05-27 10:51:18.365 E/CRASH (15544): #16 pc 0005855b /system/lib/libdvm.so
05-27 10:51:18.365 E/CRASH (15544): #17 pc 0000d308 /system/lib/libc.so (__thread_entry+72)
05-27 10:51:18.365 E/CRASH (15544): #18 pc 0000d4a0 /system/lib/libc.so (pthread_create+240)

is there any means to disable frame pacing specifically on some android versions?

I believe you can upload different APKs that don’t overlap and retain one that covers Android up to 4.4, then another up to 10 or whatever your target is. But I’ll note that we were getting reports of freezing on Android up to 7.0 that are now fixed with a new build with optimized frame pacing turned off.

I think we will hold until unity fixed this issue.obviously optimized frame pacing in unity is still not production ready.

Can confirm that this issue happens within Unity 2019.3.2f1 testing on blank project with a Samsung Galaxy Tab 4 7.0" will cause this issue on startup turning off the Optimized Frame Pacing option under Player Settings fixes the issue. I am not sure that there is an update on this in more recent versions of Unity yet.

Hi, I confirm that bug too. Tested on crashlytics HTC One (M8) API 19. The bug came from Java_com_google_androidgamesdk_ChoreographerCallback_nOnChoreographer.