godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
88.79k stars 20.13k forks source link

Debug symbols for Google Play #63060

Open damnedpie opened 2 years ago

damnedpie commented 2 years ago

Godot version

3.4.4.stable.official (419e713a2)

System information

Android 11

Issue description

Is there any way to get native debug symbols for Google Play to make those stack traces readable?

I don't get any crashes on my testing devices and for about 15000 different users who installed my game there was 0 crashrate. However, recently I have updated my game (basically changed a few textures here and there) and I have started to get numerous crashes on different devices (about 1% crashrate). I wanna figure out what's wrong, but there are different stacktraces in Google Console (all pretty unreadable to me).

I have tried building release template APK with debug_symbols=yes, but that didn't seem to work.

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.onecat.cringethecat <<<

backtrace:
  #00  pc 00000000000743f8  /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+232)
  #00  pc 0000000000389484  /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!f56be09eb88f86833124f1df42e945!704ecd9a2b!+34292)
  #00  pc 00000000001770f8  /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!6b200851123c7898055fe62ff9f71f!704ecd9a2b!+616)
  #00  pc 000000000016ed80  /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!77df12deb6a622478efa8fb9929034!704ecd9a2b!+376)
  #00  pc 000000000068ab4c  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000691b4c  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 000000000068ee28  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 000000000068c9b8  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 000000000068c344  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 000000000068c1b8  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000fa4b60  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000ef6d00  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000ef74e4  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000ec86e4  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 000000000019a0e8  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
  #00  pc 0000000000169f48  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Java_org_godotengine_godot_GodotLib_step+188)
  #00  pc 00000000000a8a90  /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/oat/arm64/base.odex (art_jni_trampoline+144)
  #00  pc 00000000020071a8  /memfd:jit-cache (org.godotengine.godot.GodotRenderer.onDrawFrame+88)
  #00  pc 00000000006909fc  /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.guardedRun+3948)
  #00  pc 0000000000691260  /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.run+224)
  #00  pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #00  pc 0000000000555830  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
  #00  pc 00000000005a3fb8  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
  #00  pc 00000000000da278  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #00  pc 000000000007a448  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Steps to reproduce

Unknown, happened to me with 2 different games I made.

Minimal reproduction project

No response

damnedpie commented 2 years ago

I have managed to decypher this stacktrace a bit by using ndk-stack and Godot debug .so ABIs, here's what I've got:

********** Crash dump: **********
#00 0x00000000000743f8 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+232)
#00 0x0000000000389484 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!f56be09eb88f86833124f1df42e945!704ecd9a2b!+34292)
#00 0x00000000001770f8 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!6b200851123c7898055fe62ff9f71f!704ecd9a2b!+616)
#00 0x000000000016ed80 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!77df12deb6a622478efa8fb9929034!704ecd9a2b!+376)
#00 0x000000000068ab4c /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_mpi_get_bit
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\bignum.c:453:9
#00 0x0000000000691b4c /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_cipher_update
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\cipher.c:477:19
#00 0x000000000068ee28 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_mpi_exp_mod
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\bignum.c:2283:19
#00 0x000000000068c9b8 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_mpi_mul_mpi
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\bignum.c:1653:20
#00 0x000000000068c344 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_mpi_sub_abs
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\bignum.c:1418:5
#00 0x000000000068c1b8 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           mbedtls_mpi_add_abs
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\thirdparty\mbedtls\library\bignum.c:1342:13
#00 0x0000000000fa4b60 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           MethodBind* create_method_bind<Bone2D, Transform2D const&>(void (Bone2D::*)(Transform2D const&))
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\core\method_bind.gen.inc:809:15
#00 0x0000000000ef6d00 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           MethodBind2<unsigned int, Transform2D const&>::call(Object*, Variant const**, int, Variant::CallError&)
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\core\method_bind.gen.inc:1523:23
#00 0x0000000000ef74e4 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           MethodBind1RC<Transform2D, unsigned int>::call(Object*, Variant const**, int, Variant::CallError&)
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\core\method_bind.gen.inc:1333:17
#00 0x0000000000ec86e4 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           Camera2D::_bind_methods()
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\scene\2d\camera_2d.cpp:731:2
#00 0x000000000019a0e8 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000)
                                                                                                                                                                           _initialize_java_modules()
                                                                                                                                                                           E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\java_godot_lib_jni.cpp:112:1
#00 0x0000000000169f48 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Java_org_godotengine_godot_GodotLib_step+188)
                                                                                                                                                                           ??
                                                                                                                                                                           ??:0:0
#00 0x00000000000a8a90 /data/app/~~Bi3yxGxFibw5KWQ_wy9oRQ==/com.onecat.cringethecat-WH32MR9zSZZwLtIO-2xj2Q==/oat/arm64/base.odex (art_jni_trampoline+144)
#00 0x00000000020071a8 /memfd:jit-cache (org.godotengine.godot.GodotRenderer.onDrawFrame+88)
#00 0x00000000006909fc /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.guardedRun+3948)
#00 0x0000000000691260 /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.run+224)
#00 0x0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
#00 0x00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
#00 0x0000000000555830 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
#00 0x00000000005a3fb8 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
#00 0x00000000000da278 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 0x000000000007a448 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

I can't figure much from this. My project is GLES2 only. Any ideas?

Zireael07 commented 2 years ago

Hmm, need to summon someone who knows Android and/or mbedtls it seems: @m4gr3d ?

akien-mga commented 2 years ago

I'm not sure this demangled stacktrace is correct. It's crashing in the Adreno GLES2 drivers, probably simply because they are notoriously buggy. I doubt mbedtls ( networking library) can crash GPU drivers.

Calinou commented 2 years ago

See https://github.com/godotengine/godot-proposals/issues/1342. Even if you build your own export templates, we don't have built-in support for separating symbols for use by Google Play yet. It may be feasible manually, but the procedure isn't known for its simplicity.

What resolutions are the textures you changed in your project? Which compression mode are they using? Are mipmaps enabled on those textures?

damnedpie commented 2 years ago

See godotengine/godot-proposals#1342. Even if you build your own export templates, we don't have built-in support for separating symbols for use by Google Play yet. It may be feasible manually, but the procedure isn't known for its simplicity.

What resolutions are the textures you changed in your project? Which compression mode are they using? Are mipmaps enabled on those textures?

Hi! All textures in my project were imported with default Texture preset (Lossless, Detect Normals, Filter On, Mipmap/Anisotropy off, detect SRGB, Fix Alpha Border). Yesterday I actually switched all textures import settings to Lossy import, no normals, no 3D detect, everything else remained the same. Compiled the new AAB and pushed it into production. In about 9 hours I've got 4 more crashreports, each crashes in Adreno GLES2 drivers. Here are all the stacktraces after ndk-stack:

Google Pixel 4a | Android 12L (SDK 32)

********** Crash dump: **********
#00 0x000000000004ba98 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+232)
#00 0x000000000038fd88 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!f56be09eb88f86833124f1df42e945!85da404!+33480)
#00 0x000000000018073c /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!6b200851123c7898055fe62ff9f71f!85da404!+620)
#00 0x00000000001783e4 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!77df12deb6a622478efa8fb9929034!85da404!+388)
#00 0x000000000098fe0c /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1036:11
#00 0x0000000000998ec4 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2532:14
#00 0x0000000000994608 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2641:2
#00 0x0000000000991a0c /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:2160:3
#00 0x0000000000990c7c /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1237:4
#00 0x0000000000990a20 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:819:14
#00 0x00000000009909a8 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::canvas_render_items_end()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1210:2
#00 0x00000000017124f4 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_canvas.cpp:272:23
#00 0x00000000015f5058 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:237:17
#00 0x00000000015f606c /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerViewport::draw_viewports()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:349:4
#00 0x00000000015a8558 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerRaster::draw(bool, double)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_raster.cpp:107:17
#00 0x00000000015fefac /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerWrapMT::draw(bool, double)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_wrap_mt.cpp:90:18
#00 0x00000000001e0434 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
Main::iteration()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\main\main.cpp:2216:35
#00 0x000000000018a794 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so
OS_Android::main_loop_iterate()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\os_android.cpp:312:9
#00 0x000000000019a4d0 /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/split_config.arm64_v8a.apk!libgodot_android.so (Java_org_godotengine_godot_GodotLib_step+420)
                                                                                                                                                             Java_org_godotengine_godot_GodotLib_step
                                                                                                                                                             E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\java_godot_lib_jni.cpp:267:18
#00 0x00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148)
#00 0x0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152)
#00 0x0000000001f3d65c /data/app/~~JgPsN2Z9X2pgqXCPMZw4TA==/com.onecat.cringethecat-fhJruWaK2YeHSDA3URecpA==/oat/arm64/base.vdex (org.godotengine.godot.GodotRenderer.onDrawFrame+20)
#00 0x000000000200a264 /memfd:jit-cache (android.opengl.GLSurfaceView$GLThread.guardedRun+3556)
#00 0x000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
#00 0x000000000040700c /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+48)
#00 0x00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
#00 0x000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156)
#00 0x00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380)
#00 0x00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992)
#00 0x00000000000b1810 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264)
#00 0x00000000000512f0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Sony Xperia XZ3 | Android 10 (SDK 29)

********** Crash dump: **********
#00 0x0000000000080578 /apex/com.android.runtime/lib64/bionic/libc.so (memcpy+760)
#00 0x0000000000373980 /vendor/lib64/egl/libGLESv2_adreno.so
#00 0x00000000001364a8 /vendor/lib64/egl/libGLESv2_adreno.so
#00 0x000000000012eff0 /vendor/lib64/egl/libGLESv2_adreno.so
#00 0x000000000098fe0c /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1036)
                                                                                                                                                RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1036:11
#00 0x0000000000998ec4 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:2532)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2532:14
#00 0x0000000000994608 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:2641)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2641:2
#00 0x0000000000991a0c /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:2160)
                                                                                                                                                RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:2160:3
#00 0x0000000000990c7c /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1237)
                                                                                                                                                RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1237:4
#00 0x0000000000990a20 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:819)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:819:14
#00 0x00000000009909a8 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::canvas_render_items_end()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1210)
                                                                                                                                                RasterizerCanvasGLES2::canvas_render_items_end()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1210:2
#00 0x00000000017124f4 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_canvas.cpp:272)
                                                                                                                                                VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_canvas.cpp:272:23
#00 0x00000000015f5058 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_viewport.cpp:237)
                                                                                                                                                VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:237:17
#00 0x00000000015f606c /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerViewport::draw_viewports()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_viewport.cpp:349)
                                                                                                                                                VisualServerViewport::draw_viewports()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:349:4
#00 0x00000000015a8558 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerRaster::draw(bool, double)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_raster.cpp:107)
                                                                                                                                                VisualServerRaster::draw(bool, double)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_raster.cpp:107:17
#00 0x00000000015fefac /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerWrapMT::draw(bool, double)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_wrap_mt.cpp:90)
                                                                                                                                                VisualServerWrapMT::draw(bool, double)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_wrap_mt.cpp:90:18
#00 0x00000000001e0434 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Main::iteration()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/main/main.cpp:2216)
                                                                                                                                                Main::iteration()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\main\main.cpp:2216:35
#00 0x000000000018a794 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (OS_Android::main_loop_iterate()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/platform\android/os_android.cpp:312)
                                                                                                                                                OS_Android::main_loop_iterate()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\os_android.cpp:312:9
#00 0x000000000019a4d0 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Java_org_godotengine_godot_GodotLib_step) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/platform\android/java_godot_lib_jni.cpp:267)
                                                                                                                                                Java_org_godotengine_godot_GodotLib_step
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\java_godot_lib_jni.cpp:267:18
#00 0x00000000000a8a90 /data/app/com.onecat.cringethecat-FY5pMcKGR4GpQljjRAiW1Q==/oat/arm64/base.odex (art_jni_trampoline+144)
#00 0x0000000002002be8 /memfd:/jit-cache (org.godotengine.godot.GodotRenderer.onDrawFrame+88)
#00 0x0000000002001e58 /memfd:/jit-cache (android.opengl.GLSurfaceView$GLThread.guardedRun+4056)
#00 0x000000000013763c /apex/com.android.runtime/lib64/libart.so (art_quick_osr_stub+60)
#00 0x0000000000337f70 /apex/com.android.runtime/lib64/libart.so (art::jit::Jit::MaybeDoOnStackReplacement(art::Thread*, art::ArtMethod*, unsigned int, int, art::JValue*)+1688)
#00 0x00000000005ab9f0 /apex/com.android.runtime/lib64/libart.so (MterpMaybeDoOnStackReplacement+212)
#00 0x0000000000136350 /apex/com.android.runtime/lib64/libart.so (MterpHelpers+240)
#00 0x00000000002d9428 /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.guardedRun+676)
#00 0x00000000005a3200 /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1100)
#00 0x0000000000131914 /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20)
#00 0x00000000002d9ba8 /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+48)
#00 0x00000000002b498c /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.17460956533834400288)+240)
#00 0x000000000059219c /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032)
#00 0x0000000000140468 /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
#00 0x0000000000137334 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
#00 0x0000000000145fec /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
#00 0x00000000004b0ba0 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#00 0x00000000004b1cb4 /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
#00 0x00000000004f2670 /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
#00 0x00000000000e6c10 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
#00 0x0000000000084ee4 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Samsung Galaxy A52s 5G | Android 12 (SDK 31)

********** Crash dump: **********
#00 0x000000000004d348 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+232)
#00 0x00000000003d6440 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!f56be09eb88f86833124f1df42e945!009e9bf746!+11656)
#00 0x00000000001bb8dc /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!6b200851123c7898055fe62ff9f71f!009e9bf746!+2388)
#00 0x00000000001b2d28 /vendor/lib64/egl/libGLESv2_adreno.so (!!!0000!77df12deb6a622478efa8fb9929034!009e9bf746!+376)
#00 0x000000000098fe0c /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1036:11
#00 0x0000000000998ec4 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2532:14
#00 0x0000000000994608 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2641:2
#00 0x0000000000991a0c /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:2160:3
#00 0x0000000000990c7c /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1237:4
#00 0x0000000000990a20 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:819:14
#00 0x00000000009909a8 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
RasterizerCanvasGLES2::canvas_render_items_end()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1210:2
#00 0x00000000017124f4 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_canvas.cpp:272:23
#00 0x00000000015f5058 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:237:17
#00 0x00000000015f606c /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerViewport::draw_viewports()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:349:4
#00 0x00000000015a8558 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerRaster::draw(bool, double)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_raster.cpp:107:17
#00 0x00000000015fefac /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
VisualServerWrapMT::draw(bool, double)
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_wrap_mt.cpp:90:18
#00 0x00000000001e0434 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
Main::iteration()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\main\main.cpp:2216:35
#00 0x000000000018a794 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so
OS_Android::main_loop_iterate()
E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\os_android.cpp:312:9
#00 0x000000000019a4d0 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/split_config.arm64_v8a.apk!libgodot_android.so (Java_org_godotengine_godot_GodotLib_step+420)
                                                                                                                                                             Java_org_godotengine_godot_GodotLib_step
                                                                                                                                                             E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\java_godot_lib_jni.cpp:267:18
#00 0x000000000006c8a8 /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/oat/arm64/base.odex (art_jni_trampoline+88)
#00 0x0000000000104e6c /data/app/~~eSnHT_ylsHRacprRay03wA==/com.onecat.cringethecat-ctz9u5Hr1WhZs2BTacNZCg==/oat/arm64/base.odex (org.godotengine.godot.GodotRenderer.onDrawFrame+92)
#00 0x0000000002009018 /memfd:jit-cache (android.opengl.GLSurfaceView$GLThread.guardedRun+4088)
#00 0x00000000002124c4 /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
#00 0x000000000045ec68 /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+48)
#00 0x0000000000218964 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
#00 0x0000000000284208 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+188)
#00 0x000000000061fc44 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
#00 0x000000000066e808 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1184)
#00 0x00000000000b6d04 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264)
#00 0x0000000000053314 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)

Samsung Galaxy S8+ | Android 9 (SDK 28)

********** Crash dump: **********
#00 0x000000000001e118 /system/lib64/libc.so (memcpy+232)
#00 0x00000000001d0db4 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxVertexArrayObject::UpdateInternalVbos(EsxDrawDescriptor const*, unsigned int, EsxAttributeDesc const*)+1644)
#00 0x0000000000336aac /system/vendor/lib64/egl/libGLESv2_adreno.so (A5xVertexArrayObject::CalcVfdRegs(EsxDrawDescriptor const*, A5xVfdRegs*, int)+892)
#00 0x000000000034f50c /system/vendor/lib64/egl/libGLESv2_adreno.so (A5xContext::ValidateState(EsxDrawDescriptor const*)+1212)
#00 0x000000000033bdd8 /system/vendor/lib64/egl/libGLESv2_adreno.so (A5xContext::HwValidateGfxState(EsxDrawDescriptor const*)+16)
#00 0x00000000001151c8 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxContext::ValidateGfxState(EsxDrawDescriptor const*)+1968)
#00 0x000000000010c6b4 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxContext::DrawElementsInstanced(EsxPrimType, unsigned int, EsxPixType, void const*, unsigned int, int)+972)
#00 0x000000000098fe0c /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1036)
                                                                                                                                                RasterizerCanvasGLES2::render_batches(RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1036:11
#00 0x0000000000998ec4 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:2532)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::flush_render_batches(RasterizerCanvas::Item*, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, unsigned int)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2532:14
#00 0x0000000000994608 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:2641)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::render_joined_item_commands(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvas::Item*, bool&, RasterizerStorageGLES2::Material*, bool, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState const&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:2641:2
#00 0x0000000000991a0c /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:2160)
                                                                                                                                                RasterizerCanvasGLES2::render_joined_item(RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::BItemJoined const&, RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::RenderItemState&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:2160:3
#00 0x0000000000990c7c /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1237)
                                                                                                                                                RasterizerCanvasGLES2::canvas_render_items_implementation(RasterizerCanvas::Item*, int, Color const&, RasterizerCanvas::Light*, Transform2D const&)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1237:4
#00 0x0000000000990a20 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/.\drivers/gles_common/rasterizer_canvas_batcher.h:819)
                                                                                                                                                RasterizerCanvasBatcher<RasterizerCanvasGLES2, RasterizerStorageGLES2>::batch_canvas_render_items_end()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\.\drivers/gles_common\rasterizer_canvas_batcher.h:819:14
#00 0x00000000009909a8 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (RasterizerCanvasGLES2::canvas_render_items_end()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/drivers\gles2/rasterizer_canvas_gles2.cpp:1210)
                                                                                                                                                RasterizerCanvasGLES2::canvas_render_items_end()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\drivers\gles2\rasterizer_canvas_gles2.cpp:1210:2
#00 0x00000000017124f4 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_canvas.cpp:272)
                                                                                                                                                VisualServerCanvas::render_canvas(VisualServerCanvas::Canvas*, Transform2D const&, RasterizerCanvas::Light*, RasterizerCanvas::Light*, Rect2 const&, int)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_canvas.cpp:272:23
#00 0x00000000015f5058 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_viewport.cpp:237)
                                                                                                                                                VisualServerViewport::_draw_viewport(VisualServerViewport::Viewport*, ARVRInterface::Eyes)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:237:17
#00 0x00000000015f606c /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerViewport::draw_viewports()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_viewport.cpp:349)
                                                                                                                                                VisualServerViewport::draw_viewports()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_viewport.cpp:349:4
#00 0x00000000015a8558 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerRaster::draw(bool, double)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_raster.cpp:107)
                                                                                                                                                VisualServerRaster::draw(bool, double)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_raster.cpp:107:17
#00 0x00000000015fefac /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (VisualServerWrapMT::draw(bool, double)) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/servers\visual/visual_server_wrap_mt.cpp:90)
                                                                                                                                                VisualServerWrapMT::draw(bool, double)
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\servers\visual\visual_server_wrap_mt.cpp:90:18
#00 0x00000000001e0434 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Main::iteration()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/main/main.cpp:2216)
                                                                                                                                                Main::iteration()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\main\main.cpp:2216:35
#00 0x000000000018a794 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (OS_Android::main_loop_iterate()) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/platform\android/os_android.cpp:312)
                                                                                                                                                OS_Android::main_loop_iterate()
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\os_android.cpp:312:9
#00 0x000000000019a4d0 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libgodot_android.so (offset 0x16e000) (Java_org_godotengine_godot_GodotLib_step) (SourceCode: E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4/platform\android/java_godot_lib_jni.cpp:267)
                                                                                                                                                Java_org_godotengine_godot_GodotLib_step
                                                                                                                                                E:\YandexDisk\OneCatStudio\godot_sources\godot-3.4\platform\android\java_godot_lib_jni.cpp:267:18
#00 0x00000000000a8b30 /data/app/com.onecat.cringethecat-Y2pyVHQ1LszML3bvOp0ggA==/oat/arm64/base.odex (offset 0xa8000) (com.apm.insight.nativecrash.NativeImpl.doInitThreadDump [DEDUPED]+144)
#00 0x0000000000006218 /dev/ashmem/dalvik-jit-code-cache_9900_9900 (deleted)

This is the import settings for all sprites in the game: image

As per the texture resolutions, they vary from like 128x128 (smallest) to 1684x2106 (just 2 of them used as backgrounds in menus). Not all of my textures dimensions are a power of 2 if that matters.

Calinou commented 2 years ago

Not all of my textures dimensions are a power of 2 if that matters.

It might be worth checking if the crash still occurs when only using textures with power-of-two dimensions. NPOT textures should work in GLES2 if they're not repeating and don't have mipmaps, but we never know…

damnedpie commented 2 years ago

Not all of my textures dimensions are a power of 2 if that matters.

It might be worth checking if the crash still occurs when only using textures with power-of-two dimensions. NPOT textures should work in GLES2 if they're not repeating and don't have mipmaps, but we never know…

I don't think unfortunately that I would be able to do that in a production game, unless I add some transparent overhead to all the sprites that are NPOT dimensioned. Still I wanna know what made the difference here; the game had 0% crashrate for over 15000 users until an update, and it seems that textures/import has nothing to do with the crashes.

The update (after which those crashes started to occur) introduced customization to the game - new animated skins for the game mascot, particle-based traces for the mascot to jump. Essentially what the update was: 1) Reskinned main character and some new simple LOC/ROT/SCL animations made via AnimationPlayer node (most of the animations were present in the game before with 0 crashes) 2) I have started to use global coordinate CPUParticles2D to create visual FX for jumping trails. Before the patch, there were no global coordinate particles in the game, and that's another thing I'm currently thinking about.

Because come on, Adreno drivers may be shitty as they come, but there is literally no way that I'm just lucky and there were no Adreno chips among those 15k users I'm referencing. I'm honestly not as skilled to make much of those demungled stacktraces (to see if that could be a problem with textures or particles or whatever), so maybe this follow-up on update contents with stacktraces together can help you understand more about what causes those crashes.

Just wanna be of help and get help too. Making Android games in Godot is a big pleasure and Godot feels like №1 choice for small indie teams like ours, we are very grateful that Godot exists, but when I look into Android crash issues on Godot Github, it just feels like there is always lack of info or communication between game developers and Godot, hence everyone keeps getting those crashes over and over again with no fix or workaround about it. I'm ready to cooperate and provide any info in order to improve Godot on Android, so if anything is needed from me - just say the word. :D

damnedpie commented 2 years ago

UPD: So I was very lucky to get my hands on a device that uses Adreno 6xx series GPU, a Lenovo Tab P11 tablet, and I have managed to get those crashes. I was logcatting all + Godot + Adreno-GLES0 + libc + my Appodeal ad mediation plugin.

The crash was occuring in the moment when the interstitial ads were closing and the game was supposed to keep going. Flow there was as follows: 1) As they all do, the ad mediation plugin runs their ads on new UI thread 2) When user closes the ad, an "ad_closed" signal gets emitted, meanwhile the UI thread closes and my game gets maximized 3) In the callback function of this signal, my game creates a new instance for level scene and the game goes on. Crash happens here when newSurface gets created.

Oddly enough, I got completely rid of these crashes by simply adding 2.5 seconds of wait time between the "ad_closed" signal and the start of instancing a new scene. It feels like Adreno doesn't know how to handle threads or whatever, because it seems that the main thread was getting blocked or overloaded with some unknown routines, hence the game doesn't manage to load resources in time?.. Adreno-GLES0 logcat lets you know nothing about whats going under the hood and even if the game crashes it shows nothing about it.

I can dump a bazilion lines of logcats here, but I'm not sure what is even useful in this case. My workaround might work for everyone else who experiences same behavior (so far I'm having 0% crashrate), but I don't know how to make this all useful for Godot Engine development. But just like I said - I have the device, I can reproduce the crashes and logcat it all if anyone wants to further investigate this case.