<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>51410</bug_id>
          
          <creation_ts>2024-09-05 13:18:35 +0300</creation_ts>
          <short_desc>xrandr --scale crashes Xorg</short_desc>
          <delta_ts>2024-09-09 13:40:28 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>xorg-drv-ati</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="Valery Inozemtsev">shrek</assigned_to>
          <cc>shrek</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251269</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-09-05 13:18:35 +0300</bug_when>
    <thetext>Сизиф, скромный R5 230, классический Xorg, XFCE.

Команда

xrandr --output HDMI-0 --scale 2

приводит к segfault&apos;у X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251271</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-09-05 13:21:25 +0300</bug_when>
    <thetext>Небольшой отрывок сессии gdb:

Thread 1 &quot;X&quot; received signal SIGSEGV, Segmentation fault.   
0x0000000000000000 in ?? ()                                                                                             
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00005555580d0dbc in SourceValidateOnePicture (pPicture=0x55558e5057d0) at mipict.c:297
#2  miCompositeSourceValidate (pPicture=0x55558e5057d0) at mipict.c:304
#3  0x00005555580d1144 in miComputeCompositeRegion (pRegion=pRegion@entry=0x7ffffbe97928, pSrc=pSrc@entry=0x55558e5057d0, pMask=pMask@entry=0x0, pDst=pDst@entry=0x55558e5ae730, xSrc=&lt;optimized out&gt;, ySrc=&lt;optimized out&gt;, 
    xMask=&lt;optimized out&gt;, yMask=&lt;optimized out&gt;, xDst=&lt;optimized out&gt;, yDst=0, width=width@entry=1920, height=height@entry=1080) at mipict.c:382
#4  0x00007fffebe72b1c in glamor_composite (op=1 &apos;\001&apos;, source=0x55558e5057d0, mask=0x0, dest=0x55558e5ae730, x_source=0, y_source=0, x_mask=0, y_mask=0, x_dest=0, y_dest=0, width=1920, height=1080) at glamor_render.c:1660
#5  0x00005555580e3c7c in damageComposite (op=1 &apos;\001&apos;, pSrc=0x55558e5057d0, pMask=0x0, pDst=0x55558e5ae730, xSrc=0, ySrc=0, xMask=0, yMask=0, xDst=0, yDst=0, width=1920, height=1080) at damage.c:513
#6  0x00007fffeec3074c in radeon_scanout_do_update (xf86_crtc=0x55558d8d13b0, scanout_id=&lt;optimized out&gt;, src_pix=&lt;optimized out&gt;, extents=...) at /usr/src/debug/xorg-drv-ati-19.1.0/src/radeon_kms.c:997
#7  0x00007fffeec3c0a4 in drmmode_crtc_scanout_update (y=&lt;synthetic pointer&gt;, x=&lt;synthetic pointer&gt;, fb=&lt;synthetic pointer&gt;, scanout_id=&lt;optimized out&gt;, mode=0x7ffffbe97f18, crtc=0x55558d8d13b0)
    at /usr/src/debug/xorg-drv-ati-19.1.0/src/drmmode_display.c:786
#8  drmmode_set_mode_major (crtc=0x55558d8d13b0, mode=0x7ffffbe97f18, rotation=&lt;optimized out&gt;, x=0, y=0) at /usr/src/debug/xorg-drv-ati-19.1.0/src/drmmode_display.c:915
#9  0x0000555558075ff8 in xf86CrtcSetModeTransform (crtc=crtc@entry=0x55558d8d13b0, mode=mode@entry=0x7ffffbe97f18, rotation=rotation@entry=1, transform=transform@entry=0x55558e1941c8, x=x@entry=0, y=y@entry=0) at xf86Crtc.c:319
#10 0x000055555807d744 in xf86RandR12CrtcSet (pScreen=0x55558d7d50a0, randr_crtc=0x55558e194160, randr_mode=0x55558e13de60, x=0, y=0, rotation=1, num_randr_outputs=&lt;optimized out&gt;, randr_outputs=0x55558d8659e0) at xf86RandR12.c:1218
#11 0x00005555580be2ac in RRCrtcSet (crtc=0x55558e194160, mode=0x55558e13de60, x=0, y=0, rotation=rotation@entry=1, numOutputs=numOutputs@entry=1, outputs=outputs@entry=0x55558d8659e0) at rrcrtc.c:780
#12 0x00005555580bf8cc in ProcRRSetCrtcConfig (client=0x55558eb3aac0) at rrcrtc.c:1459
#13 0x0000555558000130 in Dispatch () at dispatch.c:550
#14 0x000055555800441c in dix_main (argc=14, argv=0x7ffffbe98518, envp=&lt;optimized out&gt;) at main.c:272
#15 0x00007fffef81d59c in __libc_start_call_main (main=main@entry=0x555557fec874 &lt;main&gt;, argc=argc@entry=14, argv=argv@entry=0x7ffffbe98518) at ../sysdeps/nptl/libc_start_call_main.h:58
#16 0x00007fffef81d688 in __libc_start_main_impl (main=0x555557fec874 &lt;main&gt;, argc=14, argv=0x7ffffbe98518, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=&lt;optimized out&gt;) at libc-start.c:360
#17 0x0000555557fec8c0 in _start ()
(gdb) frame 1
#1  0x00005555580d0dbc in SourceValidateOnePicture (pPicture=0x55558e5057d0) at mipict.c:297
[...]
(gdb) p /x pPicture
$1 = 0x55558e5057d0
(gdb) p /x pPicture-&gt;pDrawable
$2 = 0x55558e116650
(gdb) p /x pPicture-&gt;pDrawable-&gt;pScreen
$3 = 0x55558d7d50a0
(gdb) p /x pPicture-&gt;pDrawable-&gt;pScreen-&gt;SourceValidate
$4 = 0x0

SourceValidate NULL, но этого никто не проверяет:

(gdb) list
292         if (!pDrawable)
293             return;
294
295         pScreen = pDrawable-&gt;pScreen;
296
297         pScreen-&gt;SourceValidate(pDrawable, 0, 0, pDrawable-&gt;width,
298                                 pDrawable-&gt;height, pPicture-&gt;subWindowMode);
299     }
300
301     void


Однако можно найти такое вот:

(gdb) frame 6
#6  0x00007fffeec3074c in radeon_scanout_do_update (xf86_crtc=0x55558d8d13b0, scanout_id=&lt;optimized out&gt;, src_pix=&lt;optimized out&gt;, extents=...) at /usr/src/debug/xorg-drv-ati-19.1.0/src/radeon_kms.c:997
997             CompositePicture(PictOpSrc,
(gdb) list
992             if (xf86_crtc-&gt;filter)
993                 SetPicturePictFilter(src, xf86_crtc-&gt;filter, xf86_crtc-&gt;params,
994                                      xf86_crtc-&gt;nparams);
995
996             pScreen-&gt;SourceValidate = NULL;
997             CompositePicture(PictOpSrc,
998                              src, NULL, dst,
999                              extents.x1, extents.y1, 0, 0, extents.x1,
1000                             extents.y1, extents.x2 - extents.x1,
1001                             extents.y2 - extents.y1);


SourceValidate явно выставляется в NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251272</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-09-05 13:23:37 +0300</bug_when>
    <thetext>Действительно, когда-то в этом месте xorg-server проверял SourceValidate, а потом, начиная с 21.1, перестал:

https://git.altlinux.org/gears/x/xorg-server.git?p=xorg-server.git;a=commitdiff;h=ff310903f34ac34c916ad74e919d1ac12aea4715</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251273</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-09-05 13:24:57 +0300</bug_when>
    <thetext>В мастере у xf86-video-ati найдено такое вот:

https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/commit/7a6a34af026f0bef8080b91baf97a729380bca01

С виду должно помочь.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251385</commentid>
    <comment_count>4</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2024-09-09 10:31:39 +0300</bug_when>
    <thetext>xorg-drv-ati-4:22.0.0-alt1 -&gt; sisyphus:

 Mon Sep 09 2024 Valery Inozemtsev &lt;shrek@altlinux.ru&gt; 4:22.0.0-alt1
 - 22.0.0 (closes: #51410)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251404</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-09-09 13:40:28 +0300</bug_when>
    <thetext>Спасибо, теперь работает.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>