Created attachment 129055 [details] Apitrace. When starting openmw which is the free engine re-implementation of the game morrowind it will segfault. This may be a mesa core bug, but it will only happen with the nouveau DDX + DRI3. It will not crash with modesetting + DRI3, DRI2 or the llvmpipe. Here is a backtrace. http://pastebin.com/HMdv4iWb Apitrace log. http://pastebin.com/FzZVyGqW Here is a workaround as reported to the the mesa mailing list by Tobias Klausmann. It successfully hides the crash, but potentially breaking the hardware cursor used by openmw which works correctly with DRI2, modesetting or the llvmpipe. It also was not intended as a real fix. "OpenMW tries to upload a new surface (mouse pointer) which fails in the now guarded update_framebuffer_size() as the surface is NULL. This is not inteded as a real "fix", as it would just hide the immediate crash. So if somebody could take a look at this... Reported-by: <ovariegata@yahoo.com> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> --- src/mesa/state_tracker/st_atom_framebuffer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c index ea41d9d..3ee4ea5 100644 --- a/src/mesa/state_tracker/st_atom_framebuffer.c +++ b/src/mesa/state_tracker/st_atom_framebuffer.c @@ -177,8 +177,10 @@ update_framebuffer_state( struct st_context *st ) /* rendering to a GL texture, may have to update surface */ st_update_renderbuffer_surface(st, strb); } - pipe_surface_reference(&framebuffer->zsbuf, strb->surface); - update_framebuffer_size(framebuffer, strb->surface); + if (strb->surface) { + pipe_surface_reference(&framebuffer->zsbuf, strb->surface); + update_framebuffer_size(framebuffer, strb->surface); + } } else { strb = st_renderbuffer(fb->Attachment[BUFFER_STENCIL].Renderbuffer); -- 2.9.2"
I asked a friend who also uses openmw, he has never experienced any crashes with xf86_video_ati + DRI3.
I'm currently also experiencing a crash with OpenMW in update_framebuffer_size (surface is NULL). But with RadeonSI on Wayland! (SDL_VIDEODRIVER=wayland) Radeon RX 480, FreeBSD 12-CURRENT + drm-next-kmod 4.11, Mesa 18.1.0-devel (git master with my BSD fixes). Same game works fine on X11. Under Weston, this crash. It *used to* work fine on Wayland, but broke recently.
(In reply to Greg V from comment #2) UPDATE! The issue was in our DRM port, specifically with ioctl authentication/permissions. If nouveau still has this problem, try looking into that…
The mentioned workaround in the original description got adapted and committed recently: c3486cd8c9092cbe33dfc77b906e2475b1e32c8d st/mesa: do not call update_framebuffer_size with NULL pointer This should fix at least the SEGV. Maybe it can be reported if the invisible mouse pointer still exists in newer versions of mesa!
-- 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/1125.
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.