We are running into a memory allocation related crash on launch in our Test builds when the PlayFab C++ Multiplayer libraries are included in the build. It does not appear in Debug or Shipping builds. We are not calling any of the SDK code. All the logic unique to our integration is in .build.cs and .UPL Unreal build configuration files provided with the archive
The crash callstack points to Perfetto.cc tracing tool. Disabling Perfetto module seems to fix the crash as well, but it would be ideal if we didn’t disable Perfetto since we use it sometimes for Quest profiling.
Please let us know if similar crashes have been known to occur with these libraries on Android and if you have any suggestions for a fix.
- PlayFab SDK Version: PlayFab SDK Version: 1.8.0
- Unreal Engine Version: Unreal Engine Version: 5.2.1
- Android NDK/SDK versions: SDK: 32, NDK: 25
Attachments:
- Quest device logs from the time of the crash, including the callstack
- Archive with our custom Unreal plugin that implements the PlayFab C++ Multiplayer libraries integration (libraries are taken from this repo: https://github.com/PlayFab/PlayFabMultiplayer). Removing that plugin from our project’s build.cs and .uproject files fixes the crash
FMallocBinned2 Attempt to realloc an unrecognized block 0xb40000740f590000 canary == 0x0 != 0xe3
20:26:30.042 9838 9893 D UE : 0x000000739D9FE380 FMallocBinned2::FPerThreadFreeBlockLists::Get() at C:/Users/Egor/Wave/main/UE4/Engine/Source/Runtime/Core/Public/HAL/MallocBinned2.h:411
20:26:30.042 9838 9893 D UE : 0x000000739D92A17C perfetto::(anonymous namespace)::PlatformPosix::GetCurrentProcessName() at C:/Users/Egor/Wave/main/UE4/Engine/Source/C:/Users/Egor/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/new:?
20:26:30.042 9838 9893 D UE : 0x000000739D8ED260 std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >::__is_long() const at C:/Users/Egor/Wave/main/UE4/Engine/Source/C:/Users/Egor/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/string:1426
20:26:30.042 9838 9893 D UE : 0x000000739D8ECF64 perfetto::internal::TracingMuxerImpl::Initialize(perfetto::TracingInitArgs const&) at C:/Users/Egor/Wave/main/UE4/Engine/Source/ThirdParty/Android/perfetto/perfetto.cc:42968
20:26:30.042 9838 9893 D UE : 0x000000739D8C2F0C perfetto::base::UnixTaskRunner::RunImmediateAndDelayedTask() at C:/Users/Egor/Wave/main/UE4/Engine/Source/ThirdParty/Android/perfetto/perfetto.cc:8213
20:26:30.042 9838 9893 D UE : 0x000000739D8C24F0 std::__ndk1::lock_guard<std::__ndk1::mutex>::lock_guard(std::__ndk1::mutex&) at C:/Users/Egor/Wave/main/UE4/Engine/Source/C:/Users/Egor/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/__mutex_base:91
20:26:30.042 9838 9893 D UE : 0x000000739D8C1EA4 perfetto::base::ThreadTaskRunner::RunTaskThread(std::__ndk1::function<void (perfetto::base::UnixTaskRunner*)>) at C:/Users/Egor/Wave/main/UE4/Engine/Source/ThirdParty/Android/perfetto/perfetto.cc:8010
20:26:30.042 9838 9893 D UE : 0x000000739D92A8BC std::__ndk1::__function::__value_func<void (perfetto::base::UnixTaskRunner*)>::~__value_func() at C:/Users/Egor/Wave/main/UE4/Engine/Source/C:/Users/Egor/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/functional:1842