Skip to content

[Android] Android 10 Vulkan crash on Mali G52 GPUs during video playback #2440

@IvanovABGames

Description

@IvanovABGames

Unity version

6000.3.4f1

Unity editor platform

macOS

AVPro Video edition

Core

AVPro Video version

3.3.4

Device hardware

Redmi Note 9 (MediaTek MT6769, Mali GPU) – Android 10 (SDK 29)

Which Android OS version are you using?

10

Unity Graphics API

Vulkan

Video API

media3/ExoPlayer

Texture format

BGRA

Audio output

System Direct

Any other Media Player component configuration required to reproduce the issue.

No response

Which output component(s) are you using?

Display uGUI

Any other component configuration required to reproduce the issue.

No response

The issue

Description
We are experiencing a native crash on Android devices using Mali GPUs when AVPro Video runs with Vulkan enabled.
The crash happens inside the Vulkan rendering path during video playback.

According to Google Play Console, the issue only occurs on Android 10 (SDK 29) devices with MediaTek MT6769 (Mali GPU).

The crash happens inside:
VulkanPlayerRenderBuffer::createSourceImage()

and eventually fails in the Mali driver during vkAllocateMemory.

This appears to be related to Vulkan image allocation used by AVPro Video.

Steps to Reproduce

Unfortunately we cannot provide a minimal reproduction project publicly (per repository guidelines), but the crash occurs:
1. Launch the game on affected Android 10 devices.
2. Start video playback using AVPro Video (default configuration).
3. Native crash occurs during Vulkan rendering path.

The issue disappears when Vulkan is removed from Graphics APIs and OpenGLES3 is used instead.

Additional Notes
• Only affects Android 10 devices so far.
• Appears driver-specific (Mali + MT6769).

Media information

Test video details:

  • Container: MP4
  • Video codec: H.264
  • Audio codec: AAC
  • Resolution: 1920x1080
  • Duration: ~42 seconds
  • Audio: Stereo
  • Location: StreamingAssets/Video/Intro.mp4
  • Size: 22 MB

Logcat output

[libAVProVideo2Native.so] VulkanPlayerRenderBuffer::createSourceImage()
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 4445 >>> com.example.casual.game <<<

backtrace:
  #00  pc 0x00000000007baeb0  /vendor/lib64/egl/libGLES_mali.so
  #01  pc 0x00000000007a552c  /vendor/lib64/egl/libGLES_mali.so
  #02  pc 0x0000000000070078  /data/app/~~iROxh9K1LJsJjYYek4Cs9A==/com.example.casual.game-kWkMBr6LlOePcxlMMaliog==/lib/arm64/libAVProVideo2Native.so (VulkanPlayerRenderBuffer::createSourceImage()) (BuildId: f36f5aa662bf006f33e6ef3703c215fbe4063c61)
  #03  pc 0x000000000006fdc0  /data/app/~~iROxh9K1LJsJjYYek4Cs9A==/com.example.casual.game-kWkMBr6LlOePcxlMMaliog==/lib/arm64/libAVProVideo2Native.so (VulkanPlayerRenderBuffer::setSurfaceImage(AHardwareBufferPlayerSurfaceImage*)) (BuildId: f36f5aa662bf006f33e6ef3703c215fbe4063c61)
  #04  pc 0x000000000006b5d0  /data/app/~~iROxh9K1LJsJjYYek4Cs9A==/com.example.casual.game-kWkMBr6LlOePcxlMMaliog==/lib/arm64/libAVProVideo2Native.so (VulkanPlayerSurface::sourceImageWorkerThreadFunction()) (BuildId: f36f5aa662bf006f33e6ef3703c215fbe4063c61)
  #05  pc 0x000000000006bd7c  /data/app/~~iROxh9K1LJsJjYYek4Cs9A==/com.example.casual.game-kWkMBr6LlOePcxlMMaliog==/lib/arm64/libAVProVideo2Native.so (void* std::__ndk1::__thread_proxy[abi:ne190000]<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct>>, void (*)(std::__ndk1::shared_ptr<VulkanPlayerSurface>), std::__ndk1::shared_ptr<VulkanPlayerSurface>>>(void*)) (BuildId: f36f5aa662bf006f33e6ef3703c215fbe4063c61)
  #06  pc 0x00000000000bc37c  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+220)
  #07  pc 0x00000000000ad600  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Metadata

Metadata

Assignees

Labels

AndroidAndroid platform

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions