[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