[Bug 53017] New: user32:monitor killed by X Error on Debian 11 + Intel GPU

WineHQ Bugzilla wine-bugs at winehq.org
Wed May 18 12:08:47 CDT 2022


https://bugs.winehq.org/show_bug.cgi?id=53017

            Bug ID: 53017
           Summary: user32:monitor killed by X Error on Debian 11 + Intel
                    GPU
           Product: Wine
           Version: unspecified
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: user32
          Assignee: wine-bugs at winehq.org
          Reporter: fgouget at codeweavers.com
      Distribution: ---

user32:monitor gets killed by an X Error while running
test_ChangeDisplaySettingsEx() on my Debian 11 + Intel GPU machine (see
fg-deb64-*). This results in this type of failure:

monitor.c:61: GetProcAddress(user32, DisplayConfigSetDeviceInfo) failed.
user32:monitor:0834 done (0) in 0s
The main process has no test summary line

The lack of a summary line is what indicates that the process was summarily
killed, typically by a Unix library call.


Looking into some more details it is this call which causes the X Error:

  res = ChangeDisplaySettingsExA(devices[device].name, &dm3, NULL, CDS_RESET,
NULL);

And adding traces in winex11.drv shows more precisely that the crash happens
because bad physical size values are passed to XRRSetScreenSize():


dmFields=BITSPERPEL,PELSWIDTH,PELSHEIGHT,DISPLAYFLAGS,DISPLAYFREQUENCY,DISPLAYORIENTATION
dmBitsPerPel=8 dmPelsWidth=720 dmPelsHeight=400 dmDisplayFrequency=70
dmDisplayFlags=0 dmDisplayOrientation=0 
0024:trace:x11settings:apply_display_settings handler:XRandR 1.4 changing
L"\\\\.\\DISPLAY1" to position:(0,0) resolution:720x400 frequency:70Hz
depth:8bits orientation:0.
0024:warn:xrandr:xrandr14_set_current_mode Cannot change screen color depth
from 32bits to 8bits!
0024:trace:xrandr:set_screen_size mm_width=0 = 720 * 1 / 3840
0024:trace:xrandr:set_screen_size mm_height=0 = 400 * 2 / 2160
0024:trace:xrandr:xrandr14_set_current_mode 1638
X Error of failed request:  BadValue (integer parameter out of range for
operation)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Value in failed request:  0x0
  Serial number of failed request:  209
  Current serial number in output stream:  210


So there are two questions:
* Should set_screen_size() have defensive code that prevents using 0 as the
physical sizes?
  Using 1 instead seems to avoid the crashes.
* Why do DisplayWidthMM() and DisplayHeightMM() return bad values?
  Weirder, I just got a bunch of runs with correct Display*MM()  values and now
that I removed traces it's bad again.
  Memory corruption?

Note that xrandr knows the right physical dimensions for my screen:

$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 2160, maximum 16384 x 16384
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis)
698mm x 393mm
   3840x2160     60.00*+  30.00    25.00    24.00    29.97    23.98    29.98  
   2560x1600     59.94  
   2560x1440     59.95  
   1920x1080     60.00    60.00    50.00    59.94    30.00    25.00    24.00   
29.97    23.98  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
HDMI-2 disconnected (normal left inverted right x axis y axis)
HDMI-3 disconnected (normal left inverted right x axis y axis)

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list