Details
-
Bug
-
Resolution: Incomplete
-
P1: Critical
-
None
-
6.2.2
-
None
Description
Allow eglSurfaces and wl_egl_window by two threads without any sync as in HelloWorldX.
the api trace:
[ 5249] EGL(tid=0x76fbc5c0): eglDestroySurface 0x11b5c10 0x154f870
.
[ 5286] (tid=0x63aff2d0, gc=0x12d6708): glDrawElements 0x0005 4 0x1403 0x2
[ 5289] EGL(tid=0x63aff2d0): eglSwapBuffers 0x11b5c10 (nil), Frame Number = 68
one thread is doing eglDestroySurface, , wl_surface_destroy and wl_egl_window_destroy() while another thread still doing rendering and eglSwapBuffers,
There is race condition, wl_egl_window_destroy() will delete wl_surfac, free wayland egl_window and trigger destory wl_window callback, thread enter eglSwapBuffer, there is segmentation for null wayland interface.
I will attach the application HelloWorldX in the ticket. The application runs on imx6q.
If run long time, you will see the segmentation fault.
To reproduce the issue:
- untar attached package and copy everything to target board including .qml directory.
- ./HelloWorldX, untill it crashes.