Skip to content

安卓16更新Vulkan后,有很大比例的用户会闪退 #5906

@E9C50

Description

@E9C50

发行方式

App

具体平台

Android 16 (SDK 36) GooglePlay商店分发 云打包aab版本

常见闪退设备如下,数据来自于GooglePlay后台崩溃统计:
Samsung Galaxy A16 5G
Google Pixel 9 Pro XL
Google Pixel 8a

开发环境

macOS

项目创建方式

HBuilderX

Vue 版本

vue3

依赖版本

HBuilder X 4.87 云打包,内嵌H5,有部分translate动画,以及基于腾讯tcplayer的webrtc视频播放

问题描述

根据GooglePlay后台崩溃统计,用户崩溃率高达2.9%,且全部为Android 16,90%以上报错为如下两个情况:

情况一:
`VK_ERROR_DEVICE_LOST (RenderThread, 2 address info (1:411832422656:4096, 1:411832422656:4096), 2 vendor info (194:4310696642, 194:8605663938)): Exception type 0xc2: TRANSLATION_FAULT at level 2. VA: 0x. Access type 0x2: Read. Source id 0xf0: sc_0, Shader core 0 (tma1, Texture Cache AFBC 1). Group 0.


pid: 0, tid: 25735 >>> com.xxxx.xxxx <<<

backtrace:
#00 pc 0x0000000000076360 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#1 pc 0x00000000008fde60 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+1004)
#2 pc 0x000000000001654c /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*)+80)
#3 pc 0x000000000000bc64 /system/lib64/liblog.so (__android_log_assert+212)
#4 pc 0x00000000006fd0f4 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::onVkDeviceFault(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+980)
#5 pc 0x00000000006fccbc /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::deviceLostProcRenderThread(void*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+76)
#6 pc 0x0000000000207f44 /system/lib64/libhwui.so (skgpu::InvokeDeviceLostCallback(skgpu::VulkanInterface const*, VkDevice_T*, void*, void ()(void, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&), bool)+628)
#7 pc 0x0000000000207624 /system/lib64/libhwui.so (GrVkResourceProvider::checkCommandBuffers()+1732)
#8 pc 0x000000000031dec8 /system/lib64/libhwui.so (GrDirectContext::performDeferredCleanup(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, GrPurgeResourceOptions)+104)
#9 pc 0x0000000000550044 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+740)
#10 pc 0x0000000000019bcc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+236)
#11 pc 0x000000000001bd58 /system/lib64/libutils.so (libutil_thread_trampoline(void*) (.__uniq.226528677032898775202282855395389835431)+24)
#12 pc 0x00000000000873e4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*) (.__uniq.67847048707805468364044055584648682506)+180)
#13 pc 0x0000000000079c64 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)`

情况二:
`VK_ERROR_DEVICE_LOST (RenderThread): No details: VK_EXT_device_fault not available/enabled.


pid: 0, tid: 2764 >>> com.xxxx.xxxx <<<

backtrace:
#00 pc 0x00000000000a7cc8 /apex/com.android.runtime/lib64/bionic/libc.so (abort+156)
#1 pc 0x00000000008a0f04 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+476)
#2 pc 0x0000000000016188 /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*)+80)
#3 pc 0x000000000000d254 /system/lib64/liblog.so (__android_log_assert+288)
#4 pc 0x000000000088a018 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::onVkDeviceFault(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+1032)
#5 pc 0x0000000000889bb4 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::deviceLostProcRenderThread(void*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+72)
#6 pc 0x00000000004037ec /system/lib64/libhwui.so (skgpu::InvokeDeviceLostCallback(skgpu::VulkanInterface const*, VkDevice_T*, void*, void ()(void, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&), bool)+288)
#7 pc 0x0000000000402fec /system/lib64/libhwui.so (GrVkResourceProvider::checkCommandBuffers()+1852)
#8 pc 0x0000000000584550 /system/lib64/libhwui.so (GrDirectContext::performDeferredCleanup(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, GrPurgeResourceOptions)+112)
#9 pc 0x000000000068e728 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+728)
#10 pc 0x0000000000019060 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+248)
#11 pc 0x000000000001b66c /system/lib64/libutils.so (libutil_thread_trampoline(void*) (.__uniq.226528677032898775202282855395389835431)+20)
#12 pc 0x00000000000b78f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+232)
#13 pc 0x00000000000aac5c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
`

重现步骤

未知,错误信息为谷歌商店后台收集统计信息,只知道100%都为安卓16系统,谷歌后台给出报错案例设备为以下三台设备,整体用户崩溃率为2.9%!

Samsung Galaxy A16 5G
Google Pixel 9 Pro XL
Google Pixel 8a

期望行为

No response

实际行为

No response

截图或录屏

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions