question

haskel avatar image
haskel asked

Crash on Android using Playfab UnrealMarketPlacePlugin

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)




unrealandroid
2 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Sarah Zhang avatar image Sarah Zhang commented ·

Could you please clarify which one code line caused this crash issue? Could you please provide the specific code sample?

0 Likes 0 ·
haskel avatar image haskel Sarah Zhang commented ·

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.

1 Like 1 ·
Sarah Zhang avatar image
Sarah Zhang answered

Apologies, we can't find any relevant information from this bug report. Could you please clarify what API did you call before this crash?

2 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

haskel avatar image haskel commented ·

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

0 Likes 0 ·
Sarah Zhang avatar image Sarah Zhang haskel commented ·

Thank you for your information, we will check it.

0 Likes 0 ·
jonathan avatar image
jonathan answered

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'.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

jonathan avatar image
jonathan answered

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'.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Kevin Beqo avatar image
Kevin Beqo answered

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.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.