On an RPi5 (and cross-checked on AMLGX, both are GBM) the Kodi debug log shows this sequence:
eger_functions GL_EXT_color_buffer_half_float GL_EXT_texture_mirror_clamp_to_edge GL_KHR_parallel_shader_compile GL_EXT_EGL_image_storage GL_MESA_framebuffer_flip_y G
L_EXT_depth_clamp GL_EXT_texture_query_lod GL_MESA_sampler_objects GL_EXT_EGL_image_storage_compression GL_EXT_texture_storage_compression GL_MESA_bgra
2025-01-22 10:13:39.738 T:10583 debug <general>: OnLostDevice - notify display change event
2025-01-22 10:13:39.738 T:10583 debug <general>: CDRMUtils::SetMode - found crtc mode: 1920x1080 @ 60 Hz
2025-01-22 10:13:39.738 T:10583 info <general>: GLES: Maximum texture width: 4096
2025-01-22 10:13:39.820 T:10583 debug <general>: EGL Debugging:
Error: EGL_BAD_SURFACE
Command: eglSwapBuffers
Type: EGL_DEBUG_MSG_ERROR_KHR
Message: dri2_swap_buffers
2025-01-22 10:13:39.823 T:10583 debug <general>: CDRMAtomic::FlipPage - Execute modeset at next commit
2025-01-22 10:13:39.831 T:10583 debug <general>: CWinSystemGbmGLESContext::PresentRender - Sending display reset to all clients
Display More
In the Nouveau (GBM) log the last item is GL_MESA_bgra so I am assuming the CDRMUtils::SetMode and whatever that translates into with the EGL context are the changes that trigger the segfault. I don't understand why we trip and show the EGL_BAD_SURFACE error, but this is normally harmless (shows on all GBM devices).
The crashlog shows:
Thread 1 (Thread 0x7fd83dee5f40 (LWP 833)):
#0 0x00007fd840115a06 in ?? () from /usr/lib/libgallium-24.3.3.so
#1 0x00007fd8401575cc in ?? () from /usr/lib/libgallium-24.3.3.so
#2 0x00007fd8401578f4 in ?? () from /usr/lib/libgallium-24.3.3.so
#3 0x00007fd84015d92e in ?? () from /usr/lib/libgallium-24.3.3.so
#4 0x00007fd84007c18c in ?? () from /usr/lib/libgallium-24.3.3.so
#5 0x00007fd84007cdf9 in ?? () from /usr/lib/libgallium-24.3.3.so
#6 0x00007fd84015da31 in ?? () from /usr/lib/libgallium-24.3.3.so
#7 0x00007fd83fa8e3ec in ?? () from /usr/lib/libgallium-24.3.3.so
#8 0x00007fd83f9f65cb in dri_flush () from /usr/lib/libgallium-24.3.3.so
#9 0x00007fd842322e55 in ?? () from /usr/lib/libEGL.so.1
#10 0x00007fd84231ff13 in ?? () from /usr/lib/libEGL.so.1
#11 0x00007fd842314911 in eglSwapBuffers () from /usr/lib/libEGL.so.1
#12 0x00000000015094b0 in KODI::WINDOWING::GBM::CWinSystemGbmGLESContext::SetFullScreen(bool, RESOLUTION_INFO&, bool) ()
#13 0x0000000000c4caa8 in CGraphicContext::SetVideoResolutionInternal(RESOLUTION, bool) ()
#14 0x0000000000e934a0 in CApplication::InitWindow(RESOLUTION) ()
#15 0x0000000000e9aed6 in CApplication::CreateGUI() ()
#16 0x0000000000d469bd in XBMC_Run ()
#17 0x00000000008e6045 in main ()
Display More
I'm not an expert in backtraces, but it looks like we are opening a new context and we do something with buffers (which I assume trips EGL_BAD_SURFACE and then we see dri_flush and the segfault:
Jan 21 08:23:48.613409 LibreELEC kernel: nouveau 0000:02:00.0: gr: intr 00100000 [ERROR] nsource 00000002 [DATA_ERROR] nstatus 02000000 [BAD_ARGUMENT] ch 2 [00061000 kodi.bin[833]] subc 7 class 4497 mthd 0208 data 00000120
Jan 21 08:23:48.616747 LibreELEC kernel: nouveau 0000:02:00.0: gr: intr 00100000 [ERROR] nsource 00000002 [DATA_ERROR] nstatus 02000000 [BAD_ARGUMENT] ch 2 [00061000 kodi.bin[833]] subc 7 class 4497 mthd 0208 data 00000120
Jan 21 08:23:48.620080 LibreELEC kernel: nouveau 0000:02:00.0: gr: intr 00100000 [ERROR] nsource 00000002 [DATA_ERROR] nstatus 02000000 [BAD_ARGUMENT] ch 2 [00061000 kodi.bin[833]] subc 7 class 4497 mthd 0208 data 00000120
Jan 21 08:23:48.623435 LibreELEC kernel: nouveau 0000:02:00.0: gr: intr 00100000 [ERROR] nsource 00000002 [DATA_ERROR] nstatus 02000000 [BAD_ARGUMENT] ch 2 [00061000 kodi.bin[833]] subc 7 class 4497 mthd 0208 data 00000140
Jan 21 08:23:48.810100 LibreELEC kernel: kodi.bin[833]: segfault at 0 ip 00007fd840115a06 sp 00007fff2122b1c0 error 6 in libgallium-24.3.3.so[786a06,7fd83f98f000+111f000] likely on CPU 1 (core 1, socket 0)
Jan 21 08:23:48.810300 LibreELEC kernel: Code: 00 00 48 8b bf f8 04 00 00 48 89 04 24 8b 82 d8 02 00 00 c7 44 24 08 02 03 00 00 83 c0 01 89 82 d8 02 00 00 89 06 48 8b 47 30 <48> c7 00 6c fd 08 00 8b 16 48 8d 48 0c 48 89 e6 48 89 4f 30 89 50
I'm no expert in mesa debugging, but can you set the following to see if we can get more output:
echo "NOUVEAU_LIBDRM_DEBUG=1" > /storage/.config/kodi.conf
echo "NOUVEAU_DEBUG=1" >> /storage/.config/kodi.conf
echo "EGL_LOG_LEVEL=debug" >> /storage/.config/kodi.conf
reboot
Then pastebin the Kodi crashlog URL as before.