[Mesa-users] Mesa 20.3.1 segmentation fault

Jorge Fernandez Monteagudo jorgefm at cirsa.com
Wed Jun 22 10:30:05 UTC 2022


Hi all,
This is my first message to the list and I don't know if that's the place to report the error I'm facing...
I'm using an old mesa 20.3.1 version and sometimes I get a SIGSEGV doing swap buffer. The traces I get on GDB are:

Thread 1 (Thread 0x7f6d1737e700 (LWP 2448)):
#0  0x00007f6d0aed85a5 in amdgpu_fence_wait (fence=0x7f6cb8abdf5d, timeout=0, absolute=<optimized out>) at ../src/gallium/winsys/amdgpu/drm/amdgpu_cs.c:204
#1  0x00007f6d0aedb339 in amdgpu_add_bo_fence_dependencies (buffer=0x7f6c9b88f0d0, buffer=0x7f6c9b88f0d0, acs=0x7f6d015564c0) at ../src/gallium/winsys/amdgpu/drm/amdgpu_cs.c:1290
#2  amdgpu_add_fence_dependencies_bo_list (acs=acs at entry=0x7f6d015564c0, fence=<optimized out>, num_buffers=<optimized out>, buffers=<optimized out>) at ../src/gallium/winsys/amdgpu/drm/amdgpu_cs.c:1357
#3  0x00007f6d0aedb7ff in amdgpu_add_fence_dependencies_bo_lists (acs=0x7f6d015564c0) at ../src/gallium/winsys/amdgpu/drm/amdgpu_cs.c:1371
#4  amdgpu_cs_flush (rcs=0x7f6d015564c0, flags=2147483656, fence=<optimized out>) at ../src/gallium/winsys/amdgpu/drm/amdgpu_cs.c:1831
#5  0x00007f6d0aec4cf3 in si_flush_gfx_cs (ctx=0x7f6d014fc680, flags=2147483656, fence=0x0) at ../src/gallium/drivers/radeonsi/si_gfx_cs.c:234
#6  0x00007f6d0aeaa515 in si_buffer_map_sync_with_rings (usage=513, resource=0x7f6d173f9740, sctx=0x7f6d014fc680) at ../src/gallium/drivers/radeonsi/si_buffer.c:66
#7  si_buffer_map_sync_with_rings (sctx=0x7f6d014fc680, resource=0x7f6d173f9740, usage=513) at ../src/gallium/drivers/radeonsi/si_buffer.c:46
#8  0x00007f6d0ae58305 in si_query_hw_get_result (sctx=0x7f6d014fc680, squery=0x7f6d01312780, wait=<optimized out>, result=0x7f6d1737bdd0) at ../src/gallium/drivers/radeonsi/si_query.c:1418
#9  0x00007f6d0b1315f9 in tc_get_query_result (_pipe=<optimized out>, query=0x7f6d01312780, wait=<optimized out>, result=<optimized out>) at ../src/gallium/auxiliary/util/u_threaded_context.c:499
#10 0x00007f6d0abecdaa in query_new_value_normal (pipe=0x7f6d17e31e40, info=0x7f6d175ee580) at ../src/gallium/auxiliary/hud/hud_driver_query.c:245
#11 query_new_value (gr=0x7f6d175f3200, pipe=0x7f6d17e31e40) at ../src/gallium/auxiliary/hud/hud_driver_query.c:312
#12 0x00007f6d0abe70ec in hud_stop_queries (hud=0x7f6d1ccc6f80, pipe=0x7f6d17e31e40) at ../src/gallium/auxiliary/hud/hud_context.c:676
#13 0x00007f6d0abe7fc5 in hud_run (hud=0x7f6d1ccc6f80, cso=0x7f6d0133c000, tex=0x7f6cfaf18600) at ../src/gallium/auxiliary/hud/hud_context.c:722
#14 0x00007f6d0a632c32 in notify_before_flush_cb (_args=_args at entry=0x7f6d1737c0e0) at ../src/gallium/frontends/dri/dri_drawable.c:450
#15 0x00007f6d0a63fc5c in st_context_flush (stctxi=0x7f6d0133dc00, flags=3, fence=0x7f6d1737c0d8, before_flush_cb=0x7f6d0a632b80 <notify_before_flush_cb>, args=0x7f6d1737c0e0) at ../src/mesa/state_tracker/st_manager.c:673
#16 0x00007f6d0a633682 in dri_flush (cPriv=<optimized out>, dPriv=<optimized out>, flags=3, reason=<optimized out>) at ../src/gallium/frontends/dri/dri_drawable.c:526
#17 0x00007f6d18380ac3 in loader_dri3_swap_buffers_msc (draw=0x7f6d1cc884b8, target_msc=0, divisor=0, remainder=0, flush_flags=<optimized out>, rects=rects at entry=0x0, n_rects=0, force_copy=false) at ../src/loader/loader_dri3_helper.c:959
#18 0x00007f6d183738a1 in dri3_swap_buffers (pdraw=<optimized out>, target_msc=<optimized out>, divisor=<optimized out>, remainder=<optimized out>, flush=<optimized out>) at ../src/glx/dri3_glx.c:594

Printing the fence var in adgpu_fence_wait I see:

(gdb) print *(struct amdgpu_fence*)fence
$7 = {reference = {count = 0}, syncobj = 0, ws = 0x0, ctx = 0x0, fence = {context = 0x0, ip_type = 67108864, ip_instance = 1442840582, ring = 1140850688, fence = 6196953087261802496}, user_fence_cpu_address = 0x44000000,
  submitted = {val = 0}, signalled = 0}

then the line

      if (amdgpu_cs_syncobj_wait(afence->ws->dev, &afence->syncobj, 1,
                                 abs_timeout, 0, NULL))
         return false;

is throwing a SIGSEGV because afence->ws is a NULL pointer.

Is it a know bug already reported and solved? I need to update to a more recent Mesa3d version?

Thanks a lot
Jorge

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-users/attachments/20220622/25c1d0d3/attachment.htm>


More information about the mesa-users mailing list