Summary: | eglMakeCurrent does not always ensure dri_drawable->update_drawable_info has been called for a new EGLSurface if another has been created and destroyed first | ||
---|---|---|---|
Product: | Mesa | Reporter: | Johan Helsing <johan.helsing> |
Component: | Drivers/Gallium/llvmpipe | Assignee: | Johan Helsing <johan.helsing> |
Status: | RESOLVED MOVED | QA Contact: | mesa-dev |
Severity: | major | ||
Priority: | medium | ||
Version: | 18.0 | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
See Also: | https://bugreports.qt.io/browse/QTBUG-67678 | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Apitrace of the failing test |
Description
Johan Helsing
2018-04-18 14:33:46 UTC
Fixed by: author Johan Klokkhammer Helsing <johan.helsing@qt.io> commit dab02dea3411d325a5aee6cda5b581e61396ecc6 st/dri: Fix dangling pointer to a destroyed dri_drawable If an EGLSurface is created, made current and destroyed, and then a second EGLSurface is created. Then the second malloc in driCreateNewDrawable may return the same pointer address the first surface's drawable had. Consequently, when dri_make_current later tries to determine if it should update the texture_stamp it compares the surface's drawable pointer against the drawable in the last call to dri_make_current and assumes it's the same surface (which it isn't). When texture_stamp is left unset, then dri_st_framebuffer_validate thinks it has already called update_drawable_info for that drawable, leaving it unvalidated and this is when bad things starts to happen. In my case it manifested itself by the width and height of the surface being unset. This is fixed this by setting the pointer to NULL before freeing the surface. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106126 Signed-off-by: Johan Klokkhammer Helsing <johan.helsing@qt.io> Signed-off-by: Marek Olšák <marek.olsak@amd.com> Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org> The patch was reverted. -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/246. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.