GNOME Bugzilla – Bug 572623
X error in gnome_rr_screen_set_size
Last modified: 2009-07-31 16:11:56 UTC
I get this in g-s-d when trying to change the resolution (2.25.91):
+ Trace 212750
The program 'gnome-settings-daemon' received an X Window System error. This probably reflects a bug in the program. The error was 'BadMatch (invalid parameter attributes)'. (Details: serial 29174 error_code 8 request_code 149 minor_code 7) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.) Using the nv driver (2.1.12). Probably got a number of duplicates in g-s-d, too, but none of them currently has a stacktrace with --sync.
Another point of interest: Only seems to happen when going from large to small, not when increasing resolution (also when switching from small to large, then reverting in the confirmation dialog).
Jens: would be interesting to know if trunk (or 2.25.92 which I'll release in a few minutes) still has this issue. One change got reverted there... But I'm not quite sure it'll help...
Yes, the problem's still there in .92.
Is your stack trace with --sync?
Of course.
I was looking at the X server to see what would return BadMatch from RRSetScreenSize... Could you paste the output of "xrandr -q" *before* you try to change your resolution? Then, see if it BadMatches again.
$ xrandr -q Screen 0: minimum 320 x 175, current 1600 x 1200, maximum 1600 x 1200 default connected 1600x1200+0+0 0mm x 0mm 1600x1200 75.0* 70.0 65.0 60.0 1400x1050 75.0 60.0 1280x1024 85.0 75.0 60.0 1280x960 85.0 60.0 1152x864 100.0 85.0 75.0 1024x768 100.0 85.0 75.0 70.0 60.0 87.0 960x720 60.0 928x696 60.0 896x672 60.0 832x624 75.0 800x600 100.0 85.0 75.0 72.0 70.0 65.0 60.0 56.0 700x525 75.0 60.0 640x512 85.0 75.0 60.0 640x480 75.0 60.0 85.0 73.0 720x400 70.0 85.0 640x400 85.0 576x432 75.0 640x350 85.0 512x384 85.0 75.0 70.0 60.0 87.0 416x312 75.0 400x300 85.0 75.0 72.0 60.0 56.0 320x240 85.0 75.0 73.0 60.0 360x200 85.0 320x200 85.0 320x175 85.0 Still crashes.
Note to self: xserver/randr/rrscreen.c:ProcRRSetScreenSize() - will BadMatch if a crtc has a bigger mode than the newly-requested size. Will BadMatch if RRScreenSizeSet() returns false... RRScreenSizeSet() - returns the result of pScrPriv->rrScreenSetSize, which is implemented in... xserver/hw/xfree86/modes/xf86RandR12.c:xf86RandR12ScreenSetSize() - calls the driver's "resize" method; that's the only way it could return false. For your nv driver, that would be... xf86-video-nv/src/g80_driver.c:G80ResizeScreen() - always returns true. So, the only way that ProcRRSetScreenSize() could BadMatch would be due to a too-big crtc. However, both xrandr(1) and gnome-rr-config do this: 1. disable too-big crtcs 2. XRRSetScreenSize() 3. reconfigure crtcs with the new modes So I don't really know what's going on in your machine :)
Hum, your "xrandr -q" says your output is called "default". This only happens if your driver doesn't support RANDR 1.2. What does "xrandr --version" say?
$ xrandr --version Server reports RandR version 1.2 > xf86-video-nv/src/g80_driver.c:G80ResizeScreen() - always returns true. I don't have a G80, so this is the wrong function to look at.
Argh, sorry, this reports the protocol version, not the driver version. In general we can't rely on drivers that don't support RANDR 1.2. We already have a driver_is_1_0() function that we don't use yet; I'm thinking of making g-s-d not do anything if it finds itself faced with an old driver. Would it be too much to ask that you build your X server with debug info and step through ProcRRSetScreenSize(), to see where it returns BadMatch for you?
I have X server debugging symbols, but I don't know how to debug into it since attaching gdb obviously makes X not respond anymore which in turn makes me unable to get to gdb. I don't have remote debugging capabilities.
Jens: is this still valid? Or are you finally able to change your resolution?
Seems to work ok in 2.27.