segfault when using DRI_PRIME=1
While using DRI_PRIME=1 on my Fedora 35 stock install with an APU and dGPU piglit (and other) programs can cause dri2 to segfault reliably.
The backtrace always points to the same dri2 functions:
Thread 1 "Xorg" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) backtrace
#0 0x0000000000000000 in ()
#1 0x000055ae6f19c884 in ShmDestroyPixmap (pPixmap=<optimized out>) at ../../Xext/shm.c:260
#2 0x00007f5c6123d285 in amdgpu_dri2_destroy_buffer2 (pScreen=<optimized out>, drawable=<optimized out>, buffers=0x55ae71844a20)
at /usr/src/debug/xorg-x11-drv-amdgpu-21.0.0-1.fc35.x86_64/src/amdgpu_dri2.c:227
#3 0x000055ae6f226763 in do_get_buffers
(pDraw=pDraw@entry=0x55ae72c1f530, width=0x7ffcfbbc2a80, height=0x7ffcfbbc2a88, attachments=<optimized out>, count=1, out_count=out_count@entry=0x7ffcfbbc2a90, has_format=1) at dri2/dri2.c:683
#4 0x000055ae6f22822f in DRI2GetBuffersWithFormat (out_count=<optimized out>, count=<optimized out>, attachments=<optimized out>, height=<optimized out>, width=<optimized out>, pDraw=<optimized out>)
at dri2/dri2.c:708
#5 ProcDRI2GetBuffersWithFormat (client=<optimized out>) at dri2/dri2ext.c:317
#6 ProcDRI2Dispatch (client=0x55ae71be87b0) at dri2/dri2ext.c:619
#7 0x000055ae6f0ec2d7 in Dispatch () at ../../dix/dispatch.c:478
#8 dix_main (envp=<optimized out>, argv=0x7ffcfbbc2ca8, argc=6) at ../../dix/main.c:276
#9 main (argc=6, argv=0x7ffcfbbc2ca8, envp=<optimized out>) at ../../dix/stubmain.c:34
Edited by Tom St Denis