mesa/src/egl
Maniraj D 796c9ab3fd egl: set TSD as NULL after deinit
When eglReleaseThread() is called from application's
destructor (API with __attribute__((destructor))),
it crashes due to invalid memory access.

In this case, _egl_TLS is freed in the flow of
_eglAtExit() as below but _egl_TLS is not set to NULL.

    _eglDestroyThreadInfo
        _eglFiniTSD
            _eglAtExit
                _run_exit_handlers
                    exit

Later when the eglReleaseThread is called from
application's destructor, it ends-up accessing
the freed _egl_TLS pointer.

    eglReleaseThread -> in libEGL_mesa
        eglReleaseThread -> in libEGL(glvnd)
            destructor() -> App's destructor

To resolve the invalid access, setting the _egl_TLS
pointer as NULL after freeing it.

Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Cc: mesa-stable

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5466
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13302>
2021-10-15 06:22:13 +00:00
..
drivers egl/dri: Enable FP16 for EGL_EXT_platform_device 2021-10-13 16:36:27 +00:00
generate Remove the shebang from eglFunctionList.py. 2021-10-13 05:34:27 +00:00
main egl: set TSD as NULL after deinit 2021-10-15 06:22:13 +00:00
wayland egl/wayland: add a NULL guard for the authenticate callback 2020-12-16 13:48:48 +00:00
egl-entrypoint-check.py python: explicitly require python3 2021-08-14 21:44:31 +00:00
egl-glvnd-symbols.txt egl: add glvnd symbols check 2019-07-10 11:27:51 +00:00
egl-symbols.txt egl: use new symbols check script 2019-07-10 11:27:51 +00:00
meson.build egl: Use the .def file for Windows 2021-09-15 20:17:31 +00:00