GNOME Bugzilla – Bug 357778
vino-server crashes after connect if resolution has been changed via xrandr
Last modified: 2007-02-02 14:37:11 UTC
That bug has been opened on https://launchpad.net/distros/ubuntu/+source/vino/+bug/43050 "If you connect to vino after having changed the resolution with "Screen Resolution Preferences" (or xrandr) it crashes the vino server and you have to connect again. This is odd because changing the resolution while connected to vino works fine (the client window is resized also and stays connected). Dapper, updated daily. ..." Debug backtrace with vino 2.13.5: "Program received signal SIGSEGV, Segmentation fault.
+ Trace 73292
Thread 47373729732928 (LWP 22808)
Created attachment 81626 [details] [review] Proposed patch In the patch i show where is the problem. I don't hope this patch will get in vino, but it give an idea about what's happening. When screen resolution is changed, vino_server_screen_size_changed() is not being executed, so, i just created a callback for 'size-changed' signal in GdkScreen. It fixed the problem.
Hmm, just looking at docs/TODO: => Bugs + Fix the screen size-changed handling. We seem to not get the ConfigureNotify on the root window for ages and thus get a BadMatch when we try and do a GetImage with the wrong size image. (Don't think that's the same problem as this) Ah, I think the problem here is we don't connect to size-changed until the first client has connected
Created attachment 81759 [details] [review] Trivial patch Mark, see this trivial patch. Can we use it?
The problem with that is that Vino spends a lot of time tracking the screen contents even when no clients are logged in ..
2007-02-02 Mark McLoughlin <mark@skynet.ie> Hopefully fix crash when connecting after changing the screen resolution (bug #357778) Thanks to Jonh Wendell for reproducing and suggesting fixes. * server/vino-server.c: (vino_server_setup_framebuffer): Make sure the screen size gets updated when the first client connects.
*** Bug 359294 has been marked as a duplicate of this bug. ***