Android端使用vulkan渲染崩溃问题

我们项目使用3.8.3打包Android发布到Google Play后,发现崩溃率超标,查看崩溃日志发现都和绘制有关。目前去掉vulkan之后,一台之前崩的机子 现在倒是不崩了,但是也不确定对线上大面积机型是否有效。请问这可能是什么原因造成的呢,有什么排查方向吗?发生崩溃的机子大部分是一些Android9和10的低端机型,以下是一些崩溃日志


pid: 0, tid: 15246 >>>xxxxxxxxxx <<<

backtrace:
#00 pc 0x0000000000051d88 /apex/com.android.runtime/lib/bionic/libc.so (__memcpy_a53+136)
#01 pc 0x000000000052c469 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (void cc::gfx::doBufferTextureCopycc::gfx::Device(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int, cc::MessageQueue*, cc::gfx::Device*)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#02 pc 0x000000000052c387 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::gfx::DeviceAgent::copyBuffersToTexture(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#03 pc 0x00000000006f3f27 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::SimpleTexture::assignImage(cc::ImageAsset*, unsigned int, unsigned int)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#04 pc 0x00000000006f47a5 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::Texture2D::setMipmapParams(std::__ndk1::vector<cc::IntrusivePtrcc::ImageAsset, std::__ndk1::allocator<cc::IntrusivePtrcc::ImageAsset>> const&)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#05 pc 0x00000000006f45f5 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::Texture2D::setMipmaps(std::__ndk1::vector<cc::IntrusivePtrcc::ImageAsset, std::__ndk1::allocator<cc::IntrusivePtrcc::ImageAsset>> const&)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#06 pc 0x00000000007f47e3 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (js_cc_Texture2D_setMipmaps(se::State&)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#07 pc 0x00000000008ff185 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (jsbFunctionWrapper(v8::FunctionCallbackInfov8::Value const&, bool ()(se::State&), char const)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#08 pc 0x000000000130347c /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (Builtins_CallApiCallbackGeneric+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)


pid: 0, tid: 30126 >>>xxxxxxxxxx <<<

backtrace:
#00 pc 0x000000000008ded4 /vendor/lib/hw/vulkan.msm8937.so
#01 pc 0x0000000000087367 /vendor/lib/hw/vulkan.msm8937.so (qglinternal::vkCmdPipelineBarrier(VkCommandBuffer_T*, unsigned int, unsigned int, unsigned int, unsigned int, VkMemoryBarrier const*, unsigned int, VkBufferMemoryBarrier const*, unsigned int, VkImageMemoryBarrier const*)+108)
#02 pc 0x0000000000687b55 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::gfx::cmdFuncCCVKCopyBuffersToTexture(cc::gfx::CCVKDevice*, unsigned char const* const*, cc::gfx::CCVKGPUTexture*, cc::gfx::BufferTextureCopy const*, unsigned int, cc::gfx::CCVKGPUCommandBuffer const*)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#03 pc 0x000000000067cb8f /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::gfx::CCVKDevice::copyBuffersToTexture(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#04 pc 0x000000000052cceb /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (void cc::gfx::doBufferTextureCopycc::gfx::Device(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int, cc::MessageQueue*, cc::gfx::Device*)::DeviceCopyBuffersToTexture::execute()+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#05 pc 0x000000000052d97b /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (cc::MessageQueue::consumerThreadLoop()+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#06 pc 0x000000000052ecc7 /data/app/xxxxxxxxxx/split_config.armeabi_v7a.apk!libcocos.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_deletestd::__ndk1::__thread_struct>, void (cc::MessageQueue::)() noexcept, cc::MessageQueue>>(void*)+290816) (BuildId: 26e722ae72b8a35cf4bf58912e71d41e2a58038c)
#07 pc 0x00000000000a69b7 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20)
#08 pc 0x00000000000601af /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)


pid: 0, tid: 25386 >>>xxxxxxxxxx <<<

backtrace:
#00 pc 0x0000000000a4ef3c /data/app/~~75-HMI8eCDuzQlbsvF-hCg==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (cc::Root::frameMoveEnd()+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#01 pc 0x0000000000b80f64 /data/app/~~75-HMI8eCDuzQlbsvF-hCg==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (js_cc_Root_frameMove(se::State&)+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#02 pc 0x0000000000d47b90 /data/app/~~75-HMI8eCDuzQlbsvF-hCg==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (jsbFunctionWrapper(v8::FunctionCallbackInfov8::Value const&, bool ()(se::State&), char const)+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#03 pc 0x000000000000f824 /data/app/~~75-HMI8eCDuzQlbsvF-hCg==/xxxxxxxxxx/split_config.arm64_v8a.apk


pid: 0, tid: 11440 >>>xxxxxxxxxx <<<

backtrace:
#00 pc 0x00000000000b1a8c /vendor/lib64/hw/vulkan.adreno.so (!!!0000!d02eaf653ed404e413c8c644159872!c263890aed!+756)
#01 pc 0x000000000009e8c0 /vendor/lib64/hw/vulkan.adreno.so (qglinternal::vkCmdCopyBufferToImage2KHR(VkCommandBuffer_T*, VkCopyBufferToImageInfo2KHR const*)+1136)
#02 pc 0x000000000009e420 /vendor/lib64/hw/vulkan.adreno.so (qglinternal::vkCmdCopyBufferToImage(VkCommandBuffer_T*, VkBuffer_T*, VkImage_T*, VkImageLayout, unsigned int, VkBufferImageCopy const*)+192)
#03 pc 0x0000000000a10ad0 /data/app/~~4DA5JXPrEkuXwCEMTk0bew==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (cc::gfx::cmdFuncCCVKCopyBuffersToTexture(cc::gfx::CCVKDevice*, unsigned char const* const*, cc::gfx::CCVKGPUTexture*, cc::gfx::BufferTextureCopy const*, unsigned int, cc::gfx::CCVKGPUCommandBuffer const*)+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#04 pc 0x0000000000a02118 /data/app/~~4DA5JXPrEkuXwCEMTk0bew==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (cc::gfx::CCVKDevice::copyBuffersToTexture(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int)+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#05 pc 0x00000000008482f8 /data/app/~~4DA5JXPrEkuXwCEMTk0bew==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (void cc::gfx::doBufferTextureCopycc::gfx::Device(unsigned char const* const*, cc::gfx::Texture*, cc::gfx::BufferTextureCopy const*, unsigned int, cc::MessageQueue*, cc::gfx::Device*)::DeviceCopyBuffersToTexture::execute()+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#06 pc 0x00000000008494c0 /data/app/~~4DA5JXPrEkuXwCEMTk0bew==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (cc::MessageQueue::consumerThreadLoop()+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#07 pc 0x000000000084ad34 /data/app/~~4DA5JXPrEkuXwCEMTk0bew==/xxxxxxxxxx/split_config.arm64_v8a.apk!libcocos.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_deletestd::__ndk1::__thread_struct>, void (cc::MessageQueue::)() noexcept, cc::MessageQueue>>(void*)+323584) (BuildId: 05712d612d7c645000a6f17d852cfd8411811d0d)
#08 pc 0x00000000000c56d8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+228)
#09 pc 0x000000000005efa8 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)

另外附上一些GP后台崩溃截图

原来vulkan有问题,避雷了

有大佬能帮忙看下吗

3.8.3打包Android崩溃率太高了,来个官方大佬帮忙看看吧 @boyue @dumganhar @minggo @song2008_2001

先切换为 opengles3 ,看看是否也有问题?
android 上 opengles3 稳定性会比 vulkan 更好。

好的,感谢!我们现在也是切到gles3这样做的,看是否能解决问题

你好 ios 热更新必须得选择 vullkan 模式 但是华为手机就会崩溃 目前测试的 meta60 一定会崩溃 但是去掉 vullkan 模式 打包又 ios 又不能同步更新 这个目前有什么解决方案没

你好 我在开发中遇到 3.8.3这个引擎版本 ios 热更新必须得选择 vullkan 模式 但是华为手机就会崩溃 目前测试的 meta60 一定会崩溃 但是去掉 vullkan 模式 打包又 ios 又不能同步更新 这个目前有什么解决方案没