On Tue, 19 Dec 2023 20:22:43 +0100 Eduard Bloch <e...@gmx.de> wrote:

                #7  0x00007fb14945a510 __restore_rt (libc.so.6 + 0x3c510)
                #8  0x00007fb149186702 n/a (amdgpu_drv.so + 0x16702)
                #9  0x00007fb149186c96 n/a (amdgpu_drv.so + 0x16c96)
                #10 0x00005577d8e75a6b xf86DPMSSet (Xorg + 0xd3a6b)


Hello,
I am not maintainer of xserver-xorg-video-amdgpu,
just tried to collect some more information.

The interesting lines above in the stacktrace translate to this:

Stack trace of thread 1011552:
...
#7  0x7fb14945a510 __restore_rt (libc.so.6 + 0x3c510) |
#8  0x7fb149186702 n/a (amdgpu_drv.so + 0x16702)      | in drmmode_set_mode at 
../../src/drmmode_display.c:1267
#9  0x7fb149186c96 n/a (amdgpu_drv.so + 0x16c96)      | in 
drmmode_set_mode_major at ../../src/drmmode_display.c:1371
#10 0x5577d8e75a6b xf86DPMSSet (Xorg + 0xd3a6b)       | in xf86DPMSSet
...

This leads to this [1] upstream issue and merge request [2].
Unfortunately this is not yet part of an upstream release.

A workaround could be a local build of xserver-xorg-video-amdgpu
containing the two commits. They are the first commits after the 23.0.0 release.

Kind regards,
Bernhard

[1] https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/issues/70
[2] 
https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/merge_requests/85
# 2024-05-04 Trixie/testing amd64 qemu VM



apt install gdb xserver-xorg xserver-xorg-video-amdgpu xserver-xorg-core-dbgsym 
xserver-xorg-video-amdgpu-dbgsym
apt build-dep xserver-xorg-video-amdgpu



mkdir /home/benutzer/source/xserver-xorg-video-amdgpu/orig -p
cd    /home/benutzer/source/xserver-xorg-video-amdgpu/orig
apt source xserver-xorg-video-amdgpu



gdb -q
set width 0
set pagination off
directory 
/home/benutzer/source/xserver-xorg-video-amdgpu/orig/xserver-xorg-video-amdgpu-23.0.0/debian/patches
file /usr/lib/xorg/Xorg
tb main
run
call dlopen("/usr/lib/xorg/modules/drivers/amdgpu_drv.so",0x101)
print (int)getpid()
shell cat /proc/2535/maps | grep amdgpu_drv | head -n1
b *(0x7ffff74f9000 + 0x16c96)
b *(0x7ffff74f9000 + 0x16702)
info b
pipe disassemble drmmode_set_mode_major | grep -i c96 -C3
pipe disassemble drmmode_set_mode | grep -i 702 -C3
list drmmode_display.c:1371
list drmmode_display.c:1267



benutzer@debian:~$ gdb -q
(gdb) set width 0
(gdb) set pagination off
(gdb) directory 
/home/benutzer/source/xserver-xorg-video-amdgpu/orig/xserver-xorg-video-amdgpu-23.0.0/debian/patches
Source directories searched: 
/home/benutzer/source/xserver-xorg-video-amdgpu/orig/xserver-xorg-video-amdgpu-23.0.0/debian/patches:$cdir:$cwd
(gdb) file /usr/lib/xorg/Xorg
Reading symbols from /usr/lib/xorg/Xorg...
Reading symbols from 
/usr/lib/debug/.build-id/77/6f662cfdbd2d0952921614575518e7c1b90261.debug...
(gdb) tb main
Temporary breakpoint 1 at 0x4d260: file ../../../../dix/stubmain.c, line 33.
(gdb) run
Starting program: /usr/lib/xorg/Xorg 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffe478, envp=0x7fffffffe488) 
at ../../../../dix/stubmain.c:33
33      ../../../../dix/stubmain.c: Datei oder Verzeichnis nicht gefunden.
(gdb) call dlopen("/usr/lib/xorg/modules/drivers/amdgpu_drv.so",0x101)
$1 = (void *) 0x555555803a80
(gdb) info inferior
  Num  Description       Connection           Executable        
* 1    process 2535      1 (native)           /usr/lib/xorg/Xorg 
(gdb) print (int)getpid()
$2 = 2535
(gdb) shell cat /proc/2535/maps | grep amdgpu_drv | head -n1
7ffff74f9000-7ffff7500000 r--p 00000000 08:12 681046                     
/usr/lib/xorg/modules/drivers/amdgpu_drv.so
(gdb) b *(0x7ffff74f9000 + 0x16c96)
Breakpoint 2 at 0x7ffff750fc96: file ../../src/drmmode_display.c, line 1371.
(gdb) b *(0x7ffff74f9000 + 0x16702)
Breakpoint 3 at 0x7ffff750f702: file ../../src/drmmode_display.c, line 1267.
(gdb) info b
Num     Type           Disp Enb Address            What
2       breakpoint     keep y   0x00007ffff750fc96 in drmmode_set_mode_major at 
../../src/drmmode_display.c:1371
3       breakpoint     keep y   0x00007ffff750f702 in drmmode_set_mode at 
../../src/drmmode_display.c:1267
(gdb) pipe disassemble drmmode_set_mode_major | grep -i c96 -C3
   0x00007ffff750fc8b <+955>:   mov    %r14,%rsi
   0x00007ffff750fc8e <+958>:   mov    %rbx,%rdi
   0x00007ffff750fc91 <+961>:   call   0x7ffff750f650 <drmmode_set_mode>
   0x00007ffff750fc96 <+966>:   test   %eax,%eax
   0x00007ffff750fc98 <+968>:   jne    0x7ffff750fef8 
<drmmode_set_mode_major+1576>
   0x00007ffff750fc9e <+974>:   mov    0x30(%rsp),%rdi
   0x00007ffff750fca3 <+979>:   lea    0x60(%rsp),%rsi
(gdb) pipe disassemble drmmode_set_mode | grep -i 702 -C3
   0x00007ffff750f6f8 <+168>:   jne    0x7ffff750f710 <drmmode_set_mode+192>
   0x00007ffff750f6fa <+170>:   mov    0x78(%rsi),%rsi
   0x00007ffff750f6fe <+174>:   mov    0x10(%rsi),%rsi
   0x00007ffff750f702 <+178>:   mov    (%rsi),%r11d
   0x00007ffff750f705 <+181>:   movslq %ecx,%rsi
   0x00007ffff750f708 <+184>:   add    $0x1,%ecx
   0x00007ffff750f70b <+187>:   mov    %r11d,0x0(%r13,%rsi,4)
(gdb) list drmmode_display.c:1371
1366                    }
1367
1368                    amdgpu_drm_wait_pending_flip(crtc);
1369                    handle_deferred = TRUE;
1370
1371                    if (!drmmode_set_mode(crtc, fb, mode, x, y))
1372                            goto done;
1373
1374                    ret = TRUE;
1375
(gdb) list drmmode_display.c:1267
1262                    drmmode_output_private_ptr drmmode_output = 
output->driver_private;
1263
1264                    if (output->crtc != crtc)
1265                            continue;
1266
1267                    output_ids[output_count] = 
drmmode_output->mode_output->connector_id;     <<<<<<<<<
1268                    output_count++;
1269            }
1270
1271            drmmode_ConvertToKMode(scrn, &kmode, mode);



Stack trace of thread 1011552:
...
#7  0x7fb14945a510 __restore_rt (libc.so.6 + 0x3c510) | 
#8  0x7fb149186702 n/a (amdgpu_drv.so + 0x16702)      | in drmmode_set_mode at 
../../src/drmmode_display.c:1267
#9  0x7fb149186c96 n/a (amdgpu_drv.so + 0x16c96)      | in 
drmmode_set_mode_major at ../../src/drmmode_display.c:1371
#10 0x5577d8e75a6b xf86DPMSSet (Xorg + 0xd3a6b)       | in xf86DPMSSet
...


https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/issues/70

https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/merge_requests/85

https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/commit/ae22d12d420efbd8847f9b64b37e7a4cadde2600
https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/commit/2897e1769c5d14a74bccbacb483667933807ead8

Reply via email to