SIGABRT ImageGetHardwareBuffer

異常進程#線程

1.raster(31798)

31798 1.raster

SIGABRT
解析原始
1

00 pc 0000000000089fcc /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) [arm64-v8a::a85ef5fb74e0282813cd1edb10854577]

01 pc 00000000004b72d0 KillProcess (../../../flutter/fml/logging.cc:221) [arm64-v8a]

02 pc 00000000004b7258 ~LogMessage (../../../flutter/fml/logging.cc:208) [arm64-v8a]

03 pc 000000000049cbc0 ImageGetHardwareBuffer (../../../flutter/shell/platform/android/platform_view_android_jni_impl.cc:0) [arm64-v8a]

04 pc 0000000000494f70 HardwareBufferFor (../../../flutter/shell/platform/android/image_external_texture.cc:121) [arm64-v8a]

05 pc 0000000000495ab0 ProcessFrame (../../../flutter/shell/platform/android/image_external_texture_vk_impeller.cc:45) [arm64-v8a]

06 pc 0000000000494dc8 Paint (../../../flutter/shell/platform/android/image_external_texture.cc:0) [arm64-v8a]

07 pc 00000000007276a0 Paint (../../../flutter/flow/layers/texture_layer.cc:66) [arm64-v8a]

08 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

09 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

10 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

11 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

12 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

13 pc 0000000000726aa8 Paint (../../../flutter/third_party/libcxx/include/__memory/shared_ptr.h:0) [arm64-v8a]

14 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

15 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

16 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

17 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

18 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

19 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

20 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

21 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

22 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

23 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

24 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

25 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

26 pc 00000000007231cc PaintChildren (../../../flutter/flow/layers/container_layer.cc:0) [arm64-v8a]

27 pc 00000000007277e4 Paint (../../../flutter/flow/layers/transform_layer.cc:0) [arm64-v8a]

崩潰分析
根本原因:Impeller 渲染器與阿里云播放器的 HardwareBuffer 不兼容

堆棧關(guān)鍵幀:

05 ProcessFrame (image_external_texture_vk_impeller.cc:45) ← Impeller Vulkan 后端

04 HardwareBufferFor (image_external_texture.cc:121) ← 嘗試獲取 HardwareBuffer

03 ImageGetHardwareBuffer (platform_view_android_jni_impl.cc) ← 調(diào)用失敗 → SIGABRT

07 Paint (texture_layer.cc:66) ← 視頻紋理層渲染

原因:Flutter 3.22+ 開始在 Android 上默認啟用 Impeller 渲染器(Vulkan 后端)。升級到 3.38.10 后,Impeller 成為強制默認。而 flutter_aliplayer 通過 SurfaceTexture/TextureView 提供視頻幀,Impeller 的 Vulkan 后端在處理外部 HardwareBuffer 時存在兼容性問題,導致 SIGABRT 崩潰。

解決:
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容