MALI: eglDestroySurface() causes segmentation fault

Hi,

Some EGL applications in Wayland (using Odroid XU3 Wayland drivers r12p0) crash in eglDestroySurface

Example: start totem playing a video (totem <file>), then press the "<" back button to go to the totem main screen (from the video screen) => crash.

This is a gdb trace:

Thread 1 "totem" hit Breakpoint 1, _cogl_winsys_onscreen_deinit (
    onscreen=0x918bb8) at winsys/cogl-winsys-egl.c:691
691           if (eglDestroySurface (egl_renderer->edpy, egl_onscreen->egl_surface)
(gdb) bt
#0  0xb625247a in _cogl_winsys_onscreen_deinit (onscreen=0x918bb8) at winsys/cogl-winsys-egl.c:691
#1  0xb6243312 in _cogl_onscreen_free (onscreen=0x918bb8) at cogl-onscreen.c:169
#2  0xb6243312 in _cogl_object_onscreen_indirect_free (obj=0x918bb8) at cogl-onscreen.c:53
#3  0xb62d8b08 in  () at /usr/lib/arm-linux-gnueabihf/libclutter-1.0.so.0
(gdb) bt full
#0  0xb625247a in _cogl_winsys_onscreen_deinit (onscreen=0x918bb8) at winsys/cogl-winsys-egl.c:691
        framebuffer = 0x918bb8
        context = <optimized out>
        egl_display = <optimized out>
        renderer = <optimized out>
        egl_renderer = 0x4a8c18
        egl_onscreen = 0x6a8d20
#1  0xb6243312 in _cogl_onscreen_free (onscreen=0x918bb8) at cogl-onscreen.c:169
        framebuffer = 0x918bb8
        winsys = 0xb627ee78 <vtable>
        frame_info = 0x0
#2  0xb6243312 in _cogl_object_onscreen_indirect_free (obj=0x918bb8) at cogl-onscreen.c:53
#3  0xb62d8b08 in  () at /usr/lib/arm-linux-gnueabihf/libclutter-1.0.so.0
(gdb) p egl_renderer->edpy
$6 = (EGLDisplay) 0x4e5dc8
(gdb) p egl_onscreen->egl_surface
$7 = (EGLSurface) 0x5997e8
(gdb) p *0x5997e8
$8 = 5300096
(gdb) p *0x4e5dc8
$9 = 0
(gdb) step
[Thread 0xa94221e0 (LWP 7997) exited]
[Thread 0x945a91e0 (LWP 7979) exited]
[Thread 0x955a91e0 (LWP 7977) exited]
[Thread 0x965a91e0 (LWP 7975) exited]
[Thread 0x97cf81e0 (LWP 7973) exited]
[Thread 0x95da91e0 (LWP 7976) exited]
[Thread 0x92dd51e0 (LWP 7996) exited]
[Thread 0x94da91e0 (LWP 7978) exited]

Thread 1 "totem" received signal SIGSEGV, Segmentation fault.
0xb59c3518 in wl_proxy_marshal () from /usr/lib/arm-linux-gnueabihf/libwayland-client.so.0
(gdb) bt full
#0  0xb59c3518 in wl_proxy_marshal () at /usr/lib/arm-linux-gnueabihf/libwayland-client.so.0
#1  0xb4afb85e in window_surface_delete () at /usr/lib/arm-linux-gnueabihf/egl-current/libwayland-egl.so.1
#2  0xb4af31e4 in eglp_window_surface_specific_deinitialization () at /usr/lib/arm-linux-gnueabihf/egl-current/libwayland-egl.so.1
#3  0xb4af1d14 in eglp_delete_surface () at /usr/lib/arm-linux-gnueabihf/egl-current/libwayland-egl.so.1
#4  0xb4af2540 in eglDestroySurface () at /usr/lib/arm-linux-gnueabihf/egl-current/libwayland-egl.so.1
#5  0xb6252480 in _cogl_winsys_onscreen_deinit (onscreen=0x918bb8) at winsys/cogl-winsys-egl.c:691
        framebuffer = 0x918bb8
        context = <optimized out>
        egl_display = <optimized out>
        renderer = <optimized out>
        egl_renderer = 0x4a8c18
        egl_onscreen = 0x6a8d20
#6  0xb6243312 in _cogl_onscreen_free (onscreen=0x918bb8) at cogl-onscreen.c:169
        framebuffer = 0x918bb8
        winsys = 0xb627ee78 <vtable>
        frame_info = 0x0
#7  0xb6243312 in _cogl_object_onscreen_indirect_free (obj=0x918bb8) at cogl-onscreen.c:53
#8  0xb62d8b08 in  () at /usr/lib/arm-linux-gnueabihf/libclutter-1.0.so.0

You can see that _cogl_winsys_onscreen_deinit calls eglDestroySurface with valid parameters (EGLDisplay and EGLSurface) but then there is a crash after window_surface_delete in libwayland-egl.so.1 (which points to libmali.so)

Any thoughts on this issue?

Thanks.

More questions in this forum