FMallocBinned2 crash in Test builds when enabling a third party plugin

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

Steps to Reproduce

Hi Thulasi,

I have integrated the attached Plugin to a sample C++ project running against the binary Epic Games Launcher release of UE 5.2.1 and same SDK/NDK (25.1.8937393) setup and am successfully launching the development configuration. Can you share additional details about your project setup or are you able to provide a minimal repro?

Best regards.