Native Crash - Crash on Video Playback (Vulkan)

Hi Unity Community,

I’m experiencing a crash during video playback on some Android devices, visible in the Google Play Console. The crash appears to be related to VideoPlayer and Vulkan integration. Below is the relevant stack trace:

Google play Console

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 6773 >>> com.AlfaBravo.CombatMaster <<<

backtrace:
  #00  pc 0x00000000000ac5f8  /apex/com.android.runtime/lib64/bionic/libc.so (tgkill+8)
  #01  pc 0x0000000000e0db9c  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (DebugStringToFilePostprocessedStacktrace(DebugStringToFileData const&)+130519040) (BuildId: 942c02a61b8e5585)
  #02  pc 0x0000000000e0e118  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (DebugStringToFile(DebugStringToFileData const&)+130519040) (BuildId: 942c02a61b8e5585)
  #03  pc 0x0000000000c2dbd8  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (GetGfxDevice()+130519040) (BuildId: 942c02a61b8e5585)
  #04  pc 0x00000000007bd75c  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (AndroidVulkanVideo::DestroyAndroidVulkanVideo(AndroidVulkanVideo::Context*)+130519040) (BuildId: 942c02a61b8e5585)
  #05  pc 0x0000000000b237b0  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (VulkanYUVToRGB::Reset()+130519040) (BuildId: 942c02a61b8e5585)
  #06  pc 0x0000000000b23770  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (core::unique_ptr<VulkanYUVToRGB>::reset()+130519040) (BuildId: 942c02a61b8e5585)
  #07  pc 0x0000000000b243e8  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (AndroidVideoMedia<AndroidMediaNDK::Traits>::VideoDecoder::~VideoDecoder()+130519040) (BuildId: 942c02a61b8e5585)
  #08  pc 0x0000000000b21c30  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (AndroidVideoMedia<AndroidMediaNDK::Traits>::ThreadedOpen(core::basic_string<char, core::StringStorageDefault<char>> const&, core::basic_string<char, core::StringStorageDefault<char>> const&, VFS::FileSize, unsigned long, char, MediaAttributes const*)+130519040) (BuildId: 942c02a61b8e5585)
  #09  pc 0x0000000000b0ef4c  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (VideoClipPlayback::OpenPlaybackJob(VideoClipPlayback::BgPlaybackJobInfo*)+130519040) (BuildId: 942c02a61b8e5585)
  #10  pc 0x00000000006196f4  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (ujob_wait_for(ujob_control_t*, ujob_handle_t, int)+130519040) (BuildId: 942c02a61b8e5585)
  #11  pc 0x0000000000619c70  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (ujob_wait_for(ujob_control_t*, ujob_handle_t, int)+130519040) (BuildId: 942c02a61b8e5585)
  #12  pc 0x000000000061a3ec  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (ujob_init(char const*, char const*, int, int, ThreadPriority, void* (*)(unsigned long, unsigned long))+130519040) (BuildId: 942c02a61b8e5585)
  #13  pc 0x00000000006d6434  /data/app/~~DeKESXkbqy5Uq6TJkdL5GA==/com.AlfaBravo.CombatMaster-ujwvaZl1-jWFDH3NcbDhCA==/split_config.arm64_v8a.apk!libunity.so (Thread::RunThreadWrapper(void*)+130519040) (BuildId: 942c02a61b8e5585)
  #14  pc 0x00000000000c0b88  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208)
  #15  pc 0x000000000005d5f8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Unity Cloud Diagnostics

Native StackTrace:

Thread 0 (crashed)
0   libgralloc_extra.so                0x000000760986806c <symbols missing for uuid: 23d91e58c4817f3af51ae3beca497cc4> 
1   libgpu_aux.so                      0x00000076092a8974 <symbols missing for uuid: 7445dab6ae44d0e32577e33d006d2ae3> 
2   libgpu_aux.so                      0x00000076092a19b0 <symbols missing for uuid: 7445dab6ae44d0e32577e33d006d2ae3> 
3   libgpu_aux.so                      0x00000076092a0288 <symbols missing for uuid: 7445dab6ae44d0e32577e33d006d2ae3> 
4   libGLES_mali.so                    0x00000075eac71680 <symbols missing for uuid: 4aac34ef9b29167f1d152ff109a984b3> 
5   libGLES_mali.so                    0x00000075eac5a950 <symbols missing for uuid: 4aac34ef9b29167f1d152ff109a984b3> 
6   split_config.arm64_v8a.apk         0x00000075799ed628 core::hash_set<core::pair<AHardwareBuffer* const, AndroidVulkanVideo::GPUColorSpaceTransformTask*, false>, core::hash_pair<core::hash<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*>, core::equal_pair<std::__ndk1::equal_to<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*> >::node* core::hash_set<core::pair<AHardwareBuffer* const, AndroidVulkanVideo::GPUColorSpaceTransformTask*, false>, core::hash_pair<core::hash<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*>, core::equal_pair<std::__ndk1::equal_to<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*> >::lookup<AHardwareBuffer*, core::equal_pair<std::__ndk1::equal_to<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*> >(AHardwareBuffer* const&, core::equal_pair<std::__ndk1::equal_to<AHardwareBuffer*>, AHardwareBuffer*, AndroidVulkanVideo::GPUColorSpaceTransformTask*> const&) const 
7   split_config.arm64_v8a.apk         0x00000075799ebdb4 AndroidVulkanVideo::ProcessFrame(AndroidVulkanVideo::Context*, AImage*, RenderTexture*, unsigned int) 
8   split_config.arm64_v8a.apk         0x0000007579d5138c AndroidVideoMedia<AndroidMediaNDK::Traits>::UpdateTexture(Texture&, double, long&) 
9   split_config.arm64_v8a.apk         0x000000757a0c1424 VideoMediaTextureOutput::OutputTexture(Texture&, VideoMediaOutputFrame*, VideoClipPlayback&, double, bool, long&) 
10  split_config.arm64_v8a.apk         0x0000007579d3f150 VideoClipPlayback::GetTextureAtTimeInternal(Texture*, double, long*) 
11  split_config.arm64_v8a.apk         0x0000007579d3f2d4 VideoClipPlayback::GetTextureNoSkipInternal(Texture*, long*) 
12  split_config.arm64_v8a.apk         0x0000007579d40528 VideoPlayback::GetTexture(Texture*, long*, bool*) 
13  split_config.arm64_v8a.apk         0x0000007579d43060 VideoPlayer::VideoUpdate(bool&) 
14  split_config.arm64_v8a.apk         0x0000007579d42ecc VideoManager::VideoUpdate() 
15  split_config.arm64_v8a.apk         0x0000007579856ba8 ExecutePlayerLoop(NativePlayerLoopSystem*) 
16  split_config.arm64_v8a.apk         0x0000007579856be8 ExecutePlayerLoop(NativePlayerLoopSystem*) 
17  split_config.arm64_v8a.apk         0x0000007579856e7c PlayerLoop() 
18  split_config.arm64_v8a.apk         0x00000075799e5a1c UnityPlayerLoop() 
19  split_config.arm64_v8a.apk         0x00000075799fd670 nativeRender(_JNIEnv*, _jobject*) 
20  boot.oat                           0x000000007183ad20 <symbols missing for uuid: 0000000000000000000000000000000000000000> 

orig_crash_report.txt (13.3 KB)
similar_crash_report.txt (19.0 KB)

Key Details:

  • Unity Version: 2022.3.52f1
  • Video Output: Using RenderTexture for video playback.
  • Issue: Crash occurs when VideoPlayer attempts to process frames (AndroidVulkanVideo::ProcessFrame).

What I’ve Tried:

  • Clearing RenderTexture with GL.Clear() before playback
  • Ensuring videos use MP4 (H.264) format.

Any insights or suggestions to address this issue would be greatly appreciated!

Hello,

From your logs I can gather info that you are using Mali GPU device. These devices have more limited support for texture formats than Adreno. Could you provide *.mp4 file you are using to reproduce this issue?

Have you tried reproducing issue with OpenGLES graphics backend?

Hello, thank you for your reply, please see attached files
Promo_Laser_Strike.zip (24.0 MB)

We do not use OpenGLES, only Vulkan, so we have not tested it.

We looked into it and couldn’t reproduce it on our end. Could you provide minimal repro project or built apk file? What models of devices this issue is reproducible on? What other settings have you modified with this project? For our reproduction we tried clean project with same settings as you have provided in screenshots on Samsung A32

Thank you for looking into the issue. Unfortunately, I cannot provide an APK file at the moment as the root cause of the crash is still unclear. The problem seems to be related to a wide range of devices, particularly Mali and Adreno GPUs, which makes narrowing down the cause more challenging.

However, after updating to Unity 6, the issue was resolved.