After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 357778 - vino-server crashes after connect if resolution has been changed via xrandr
vino-server crashes after connect if resolution has been changed via xrandr
Status: RESOLVED FIXED
Product: vino
Classification: Applications
Component: Server
2.17.x
Other Linux
: Normal critical
: ---
Assigned To: Vino Maintainer(s)
Vino Maintainer(s)
: 359294 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-09-26 09:43 UTC by Sebastien Bacher
Modified: 2007-02-02 14:37 UTC
See Also:
GNOME target: ---
GNOME version: 2.17/2.18


Attachments
Proposed patch (1.04 KB, patch)
2007-01-31 20:54 UTC, Jonh Wendell
none Details | Review
Trivial patch (481 bytes, patch)
2007-02-02 13:26 UTC, Jonh Wendell
needs-work Details | Review

Description Sebastien Bacher 2006-09-26 09:43:23 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.

Thread 47373729732928 (LWP 22808)

  • #0 rfbTranslateWithRGBTables32to8
    at tabletranstemplate.c line 104
  • #1 zrleEncode8
    at ./zrleencodetemplate.c line 85
  • #2 rfbSendRectEncodingZRLE
    at zrle.c line 91
  • #3 rfbSendFramebufferUpdate
    at rfbserver.c line 1290
  • #4 rfbUpdateClient
    at main.c line 628
  • #5 vino_server_update_client
    at vino-server.c line 182
  • #6 vino_server_client_data_pending
    at vino-server.c line 224
  • #7 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #8 g_main_context_iterate
    at gmain.c line 2677
  • #9 IA__g_main_loop_run
    at gmain.c line 2881

Comment 1 Jonh Wendell 2007-01-31 20:54:35 UTC
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.
Comment 2 Mark McLoughlin 2007-02-01 10:50:01 UTC
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
Comment 3 Jonh Wendell 2007-02-02 13:26:31 UTC
Created attachment 81759 [details] [review]
Trivial patch

Mark, see this trivial patch. Can we use it?
Comment 4 Mark McLoughlin 2007-02-02 13:32:01 UTC
The problem with that is that Vino spends a lot of time tracking the screen contents even when no clients are logged in ..
Comment 5 Mark McLoughlin 2007-02-02 14:23:52 UTC
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.

Comment 6 Jonh Wendell 2007-02-02 14:28:26 UTC
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.
Comment 7 Jonh Wendell 2007-02-02 14:37:11 UTC
*** Bug 359294 has been marked as a duplicate of this bug. ***