Hi everyone,
We have faced a Signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) on our Android build.
We developed the game on UE4.26 with the UnrealMarketPlace plugin and used Playfab for login, store, and leaderboards.
We upgraded the UnrealMarketPlace plugin to version 1.60, this made it more stable but is still crashing on some devices.
Here is the error dump we have from the Play Console.
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** pid: 0, tid: 0 >>> com.Titan.SchoolRush <<< backtrace: #00 pc 000000000cab1200 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (UObjectBase::IsValidLowLevelFast(bool) const+224) #00 pc 000000000cb55808 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FPersistentFrameCollectorArchive::operator<<(UObject*&)+64) #00 pc 000000000ca63b94 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FObjectProperty::SerializeItem(FStructuredArchiveSlot, void*, void const*) const+292) #00 pc 000000000c8e0f08 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FProperty::SerializeBinProperty(FStructuredArchiveSlot, void*, int)+140) #00 pc 000000000c8e0e10 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (UStruct::SerializeBin(FStructuredArchiveSlot, void*) const+112) #00 pc 000000000c8eb024 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (UScriptStruct::SerializeItem(FStructuredArchiveSlot, void*, void const*)+252) #00 pc 000000000ca76fc8 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FStructProperty::SerializeItem(FStructuredArchiveSlot, void*, void const*) const+116) #00 pc 000000000c8e0f08 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FProperty::SerializeBinProperty(FStructuredArchiveSlot, void*, int)+140) #00 pc 000000000c8e0e10 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (UStruct::SerializeBin(FStructuredArchiveSlot, void*) const+112) #00 pc 000000000f640b58 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (UBlueprintGeneratedClass::AddReferencedObjectsInUbergraphFrame(UObject*, FReferenceCollector&)+520) #00 pc 000000000c9cbecc /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (TFastReferenceCollector<FGCReferenceProcessor<(EFastReferenceCollectorOptions)9>, FGCCollector<(EFastReferenceCollectorOptions)9>, FGCArrayPool, (EFastReferenceCollectorOptions)9>::ProcessObjectArray(FGCArrayStruct&, TRefCountPtr<FGraphEvent> const&)+10432) #00 pc 000000000c9d1b14 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (TFastReferenceCollector<FGCReferenceProcessor<(EFastReferenceCollectorOptions)9>, FGCCollector<(EFastReferenceCollectorOptions)9>, FGCArrayPool, (EFastReferenceCollectorOptions)9>::FCollectorTaskQueue::DoTask()+1000) #00 pc 000000000c9d1448 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (TGraphTask<TFastReferenceCollector<FGCReferenceProcessor<(EFastReferenceCollectorOptions)9>, FGCCollector<(EFastReferenceCollectorOptions)9>, FGCArrayPool, (EFastReferenceCollectorOptions)9>::FCollectorTaskProcessorTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type)+1116) #00 pc 000000000c25e988 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FTaskThreadAnyThread::ProcessTasks()+820) #00 pc 000000000c25dc9c /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FTaskThreadAnyThread::ProcessTasksUntilQuit(int)+84) #00 pc 000000000c25da94 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FTaskThreadAnyThread::Run()+60) #00 pc 000000000c35c2c4 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FRunnableThreadPThread::Run()+152) #00 pc 000000000c25bf94 /data/app/com.Titan.SchoolRush-_K7Edyo0Wt1N3JtPRNh6oQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libUE4.so (offset 0xdf000) (FRunnableThreadPThread::_ThreadProc(void*)+80) #00 pc 00000000000e2364 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) #00 pc 0000000000083d98 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Could you please clarify which one code line caused this crash issue? Could you please provide the specific code sample?
Hi Sarah,
Unfortunately, we cannot determine which one code line is causing the crash. We suspect its the Garbage Collector from UE4 trying to clean the Playfab blueprint functions that is crashing.
We previously had an issue with the Garbage Collector crashing when it is cleaning up the Authentication Context, and we had to upgrade the UnrealMarketPlace plugin to v1.60. This resolved some crashes but is still happening on multiple different Android Phones.
Answer by Sarah Zhang · Aug 06, 2021 at 07:08 AM
Apologies, we can't find any relevant information from this bug report. Could you please clarify what API did you call before this crash?
We have uploaded our logfile here(https://drive.google.com/drive/folders/1iDS0c99rUiqDMKMdtHGYQyQdtO-tS3k0?usp=sharing) when we run the game in DebugGame mode. Hopefully this provides more information.
We called the following API call in the logfile:
LoginWithAndroidDeviceID
GetCatalogItems
GetUserInventory
GetAccountInfo
Get UserData
Thank you for your information, we will check it.
Answer by Dr.Chorizo.Flax · Nov 07, 2021 at 02:57 PM
I ran into a similar problem with my android application, which was using the playfab plug-in for UE 4.25.4.
I found when using the 'LoginWithAndroidDeviceID' node, the app would crash within a minute or so. I also found that if a level was loaded after logging in, but before the crash, the crash was avoided.
I don't know the exact cause of this crash. But I'm also guessing it's something with the garbage collection ?
Anyway I ended up making a temporary fix, by logging in once and when reloading the main menu. A better solution might be to make a level only for 'LoginWithAndroidDeviceID'.
,I ran into a similar problem with my android application, which was using the Playfab plug-in for UE 4.25.4.
I found when using the 'LoginWithAndroidDeviceID' node, the app would crash within a minute or so. I also found that if a level was loaded after logging in, but before the crash, the crash was avoided.
I don't know the exact cause of this crash, but I'm guessing it's something the the garbage collection ?
Anyway I ended up making a temporary fix, by logging in once and when reloading the main menu. A better solution might be to make a level only for 'LoginWithAndroidDeviceID'.
Answer by Dr.Chorizo.Flax · Nov 08, 2021 at 02:48 AM
I ran into a similar problem with my android application, which was using the playfab plug-in for UE 4.25.4.
I found when using the 'LoginWithAndroidDeviceID' node, the app would crash within a minute or so. I also found that if a level was loaded after logging in, but before the crash, the crash was avoided.
I don't know the exact cause of this crash. But I'm also guessing it's something with the garbage collection ?
Anyway I ended up making a temporary fix, by logging in once and when reloading the main menu. A better solution might be to make a level only for 'LoginWithAndroidDeviceID'.
Answer by Kevin Beqo · Jan 30 at 09:38 PM
Has happened to me as well - I am using the Playfab Marketplace Plugin v 1.71.220118
Not on all android devices. Might be worth it to test with android OS >= 11 since it happens there for me. Meanwhile for a device with Android 9 it does not.
Currently I used a suggested approach by @Dr.Chorizo.Flax where I keep a separate Level/Map just to log in -> save the info using the GameInstance -> go to main menu level and read the player info from the GameInstance.