Skip to content

gallium, vmwgfx_dri.so: Fix crash because of ignored out of memory error

Philipp Sieweck requested to merge psii/mesa:pipefix into master

This MR fixes a crash in vmwgfx_dri.so that sometimes occurs when running chromium based processes like the GPU process of Visual Studio Code inside VMware. The stacktrace I got with 19.2.1:

(gdb) bt
#0  0x00007f2c3ca4b521 in vmw_svga_winsys_query_init (sws=0x255ae13acf00, query=0x2, offset=0, queryState=SVGA3D_QUERYSTATE_NEW)
    at ../src/gallium/winsys/svga/drm/vmw_query.c:80
#1  0x00007f2c3ca2354b in begin_query_vgpu10 (svga=svga@entry=0x255ae0bf5000, sq=sq@entry=0x255ae249b6e0) at ../src/gallium/drivers/svga/svga_pipe_query.c:594
#2  0x00007f2c3ca235f7 in svga_begin_query (pipe=pipe@entry=0x255ae0bf5000, q=q@entry=0x255ae249b6e0) at ../src/gallium/drivers/svga/svga_pipe_query.c:901
#3  0x00007f2c3ca237a6 in svga_end_query (pipe=0x255ae0bf5000, q=0x255ae249b6e0) at ../src/gallium/drivers/svga/svga_pipe_query.c:986
#4  0x00007f2c3cd18a1c in st_BeginQuery (ctx=0x255ae0e4b000, q=0x255ae2496fc0) at ../src/mesa/state_tracker/st_cb_queryobj.c:195
#5  0x00007f2c3cc02c94 in _mesa_BeginQueryIndexed (target=35007, index=0, id=961) at ../src/mesa/main/queryobj.c:502
#6  0x00007f2c3cc02dec in _mesa_EndQueryIndexed (target=3796462720, index=4082986256) at ../src/mesa/main/queryobj.c:549

begin_query_vgpu10 gets called with sq->offset == -1 which happens if PIPE_NOT_ENOUGH_MEMORY is not properly propagated.

Merge request reports