So, I try to run Handbrake (trunk version) with Xpra, but I get plenty Python errors in console, also no window shows... I know Last stable Handbrake 0.9.5 worked with xpra 0.0.6, but trunk doesn't work with either 0.0.6 "upstream", nor with 0.0.7.30... There is no stable available for Ubuntu Oneiric Ocelot...
I do get this error with client side of xpra:
Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/client.py", line 860, in process_packet self._packet_handlers[packet_type](self, packet) File "/usr/lib/xpra/xpra/client.py", line 742, in _process_new_window self._process_new_common(packet, False) File "/usr/lib/xpra/xpra/client.py", line 736, in _process_new_common override_redirect) File "/usr/lib/xpra/xpra/client.py", line 83, in __init__ self.update_metadata(metadata) File "/usr/lib/xpra/xpra/client.py", line 130, in update_metadata self.set_geometry_hints(None, **hints) OverflowError: Python int too large to convert to C long
No matter do I connect by TCP or SSH. At server side log I see this:
Traceback (most recent call last): File "/usr/bin/xpra", line 7, in <module> xpra.scripts.main.main(__file__, sys.argv) File "/usr/lib/xpra/xpra/scripts/main.py", line 82, in main run_server(parser, options, mode, script_file, args) File "/usr/lib/xpra/xpra/scripts/server.py", line 258, in run_server wait_for_x_server(display_name, 3) # 3s timeout File "xpra.wait_for_x_server.pyx", line 33, in xpra.wait_for_x_server.wait_for_x_server RuntimeError: could not connect to X server after 3 seconds
Without Xpra it works... I mean running Handbrake in ssh -X -session it works normally.
I'm pretty sure I can fix the bug for the client ("int too large
"), but the second one does not make any sense: this is what you would see if the server failed to start. Can you clear all the logs and try again to confirm (run the server with --no-daemon
to make sure), you should not be able to get a working server if wait_for_x_server
fails!
This would help in figuring out which hint is too large and why:
--- xpra/client.py (revision 274) +++ xpra/client.py (working copy) @@ -127,6 +127,7 @@ ]: if a in self._metadata: hints[h] = size_metadata[a][0] * 1.0 / size_metadata[a][1] + log.info("geometry hints=%s", hints) self.set_geometry_hints(None, **hints) if not (self.flags() & gtk.REALIZED):
okay adding that patch I saw this in addition to rest:
geometry hints={'max_height': 768, 'min_height': 653, 'base_width': 4294967295L, 'max_width': 1024, 'min_width': 1084, 'base_height': 4294967295L} geometry hints={'max_height': 768, 'min_height': 653, 'base_width': 4294967295L, 'max_width': 1024, 'min_width': 1084, 'base_height': 4294967295L} Unhandled error while processing packet from peer
And as for the "second" problem, it could have occured by killing stuff with ctrl+c, thus not really an error. It is not happening when clean exit is done...
Ok, the
base_width
Is out of range for some reason, will look into it and cook up a patch later today.
I also informed Handbrake developers about this issue... we shall see if I'm heard at some time in the future :) But anyways, thanks already!
Can you please check if this fixes it and I'll apply it:
Index: xpra/client.py =================================================================== --- xpra/client.py (revision 274) +++ xpra/client.py (working copy) @@ -121,12 +121,17 @@ ]: if a in self._metadata["size-constraints"]: hints[h1], hints[h2] = size_metadata[a] + #ensure values don't overflow ints: + for k,v in hints.copy().items(): + if v>=(2**32-1): + hints[k] = -1 for (a, h) in [ ("minimum-aspect", "min_aspect_ratio"), ("maximum-aspect", "max_aspect_ratio"), ]: if a in self._metadata: hints[h] = size_metadata[a][0] * 1.0 / size_metadata[a][1] + log.info("geometry hints=%s", hints) self.set_geometry_hints(None, **hints) if not (self.flags() & gtk.REALIZED):
Note: this does not fix the underlying issue, just prevents the overflow..
Hah... while it got "forward", it still quite doesn't work... This time I get white window, and mile long errorlist on server side when firing up Handbrake... I'll attach screenshot and log is here:
Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1373, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1156, in _process_map_window self._desktop_manager.show_window(window) File "/usr/lib/xpra/xpra/server.py", line 80, in show_window model.ownership_election() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 569, in ownership_election self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1373, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1171, in _process_move_window self._desktop_manager.configure_window(window, x, y, w, h) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int XError detected while already in unwind; discarding Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/wimpiggy/util.py", line 25, in do_get_property return getattr(self, getter)(pspec.name) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 133, in do_get_property_contents_handle trap.swallow(set_pixmap) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 107, in swallow_unsynced self.call_unsynced(fun, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 98, in call_unsynced return self._call(True, fun, args, kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 86, in _call value = fun(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 126, in set_pixmap self._cleanup_listening(listening) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 78, in _cleanup_listening assert self._window not in self._listening_to TypeError: argument of type 'NoneType' is not iterable wtf, pixmap is None? Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1373, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1181, in _process_resize_window self._desktop_manager.configure_window(window, x, y, w, h) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1373, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1155, in _process_map_window self._desktop_manager.configure_window(window, x, y, width, height) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 627, in do_wimpiggy_property_notify_event self._handle_property_change(str(event.atom)) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 634, in _handle_property_change self._property_handlers[name](self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 662, in _handle_wm_normal_hints self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int XError detected while already in unwind; discarding Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/wimpiggy/util.py", line 25, in do_get_property return getattr(self, getter)(pspec.name) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 133, in do_get_property_contents_handle trap.swallow(set_pixmap) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 107, in swallow_unsynced self.call_unsynced(fun, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 98, in call_unsynced return self._call(True, fun, args, kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 86, in _call value = fun(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 126, in set_pixmap self._cleanup_listening(listening) File "/usr/lib/python2.7/dist-packages/wimpiggy/composite.py", line 78, in _cleanup_listening assert self._window not in self._listening_to TypeError: argument of type 'NoneType' is not iterable wtf, pixmap is None? Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1373, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1181, in _process_resize_window self._desktop_manager.configure_window(window, x, y, w, h) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int
Damned issue :) Whose-ever "fault" it is =)
Screenshot after applied the "workaround"
OK, here's a more correct server-side patch. Untested - but looks correct, also skips loop if hints are missing altogether.
Index: xpra/server.py =================================================================== --- xpra/server.py (revision 273) +++ xpra/server.py (working copy) @@ -709,16 +709,18 @@ elif propname == "size-hints": hints_metadata = {} hints = window.get_property("size-hints") - for attr, metakey in [ - ("max_size", "maximum-size"), - ("min_size", "minimum-size"), - ("base_size", "base-size"), - ("resize_inc", "increment"), - ("min_aspect_ratio", "minimum-aspect"), - ("max_aspect_ratio", "maximum-aspect"), - ]: - if hints is not None and getattr(hints, attr) is not None: - hints_metadata[metakey] = getattr(hints, attr) + if hints is not None: + for attr, metakey in [ + ("max_size", "maximum-size"), + ("min_size", "minimum-size"), + ("base_size", "base-size"), + ("resize_inc", "increment"), + ("min_aspect_ratio", "minimum-aspect"), + ("max_aspect_ratio", "maximum-aspect"), + ]: + v = getattr(hints, attr) + if v is not None and v>=0 and v<(2**32-1): + hints_metadata[metakey] = getattr(hints, attr) return {"size-constraints": hints_metadata} elif propname == "class-instance": c_i = window.get_property("class-instance")
Sorry...
Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1375, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1158, in _process_map_window self._desktop_manager.show_window(window) File "/usr/lib/xpra/xpra/server.py", line 80, in show_window model.ownership_election() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 569, in ownership_election self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1375, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1173, in _process_move_window self._desktop_manager.configure_window(window, x, y, w, h) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int Unhandled error while processing packet from peer Traceback (most recent call last): File "/usr/lib/xpra/xpra/protocol.py", line 272, in _process_packet self._process_packet_cb(self, decoded) File "/usr/lib/xpra/xpra/server.py", line 1375, in process_packet self._packet_handlers[packet_type](self, proto, packet) File "/usr/lib/xpra/xpra/server.py", line 1157, in _process_map_window self._desktop_manager.configure_window(window, x, y, width, height) File "/usr/lib/xpra/xpra/server.py", line 86, in configure_window model.maybe_recalculate_geometry_for(self) File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 575, in maybe_recalculate_geometry_for self._update_client_geometry() File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 584, in _update_client_geometry hints) File "bindings.pyx", line 626, in wimpiggy.lowlevel.bindings.calc_constrained_size (wimpiggy/lowlevel/bindings.c:6328) OverflowError: value too large to convert to int
OK, one more attempt:
Index: wimpiggy/window.py =================================================================== --- wimpiggy/window.py (revision 265) +++ wimpiggy/window.py (working copy) @@ -574,11 +574,24 @@ if maybe_owner and self.get_property("owner") is maybe_owner: self._update_client_geometry() + def _sanitize_size_hints(self, size_hints): + if size_hints is None: + return + for attr in ["max_size", "min_size", "base_size", + "resize_inc", "min_aspect", "max_aspect"]: + #"min_aspect_ratio", "max_aspect_ratio" ?? + v = getattr(size_hints, attr) + if v is not None: + w,h = v + if w<0 or h<0 or w>=(2**32-1) or h>(2**32-1): + log.info("clearing invalid size hint value for %s: %s", attr, v) + setattr(size_hints, attr, None) + def _update_client_geometry(self): owner = self.get_property("owner") if owner is not None: (allocated_w, allocated_h) = owner.window_size(self) hints = self.get_property("size-hints") + self._sanitize_size_hints(hints) size = wimpiggy.lowlevel.calc_constrained_size(allocated_w, allocated_h, hints)
Not completely sure if this is the right place to do it, also a bit confused by the name of the hints which seem different from the ones used in server.py
!
better, but no :D
clearing invalid size hint value for base_size: (4294967295, 4294967295) Uh-oh, our size doesn't fit window sizing constraints! Uh-oh, our size doesn't fit window sizing constraints!
And now the "white window" seems to hog cpu :p
EDIT: and/or memory
OK, the last two patches are clearly worth having so I have committed them in r275
As for the rest, I will have to run Handbrake
myself and see where the bug is, but if these are the only messages in the log, xpra is probably working "as well as expected"...
Downloaded Handbrake version 0.9.5 from their website and it runs fine here with xpra trunk. No CPU or memory hog.
As for building from source, they seem to be doing strange things like pulling their own versions of system libraries (ffmpeg, a53dec, ..) during the "make" phase!? Ignoring this dangerous behaviour for a minute, still leads to build failures:
CC ass_font.lo /bin/sh ../libtool --silent --tag=CC --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -Wall -I/home/antoine/projects/HandBrake/build/contrib/include/freetype2 -I/home/antoine/projects/HandBrake/build/contrib/include -I/home/antoine/projects/HandBrake/build/contrib/include -c -o ass_font.lo ass_font.c In file included from ass_font.c:35:0: ass_shaper.h:24:29: fatal error: fribidi/fribidi.h: No such file or directory compilation terminated. make[3]: *** [ass_font.lo] Error 1 make[3]: Leaving directory `/home/antoine/projects/HandBrake/build/contrib/libass/libass-0.10.0-1/libass' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/antoine/projects/HandBrake/build/contrib/libass/libass-0.10.0-1' make[1]: *** [all] Error 2 make[1]: Leaving directory `/home/antoine/projects/HandBrake/build/contrib/libass/libass-0.10.0-1' make: *** [contrib/libass/.stamp.build] Error 2 [antoine@antoine-laptop build]$
So unless I can reproduce this in some fashion with released or build-able versions, I will have to close this ticket...
The error above (missing fribidi development headers) should really be caught by ./configure
not make.
This is insane, it also bundles ffmpeg
, etc...
And then it still fails to build here:
YASM libavcodec/x86/h264_deblock_10bit.o libavcodec/x86/h264_deblock_10bit.asm:716: warning: label alone on a line without a colon might be in error libavcodec/x86/h264_deblock_10bit.asm:716: warning: label alone on a line without a colon might be in error libavcodec/x86/h264_deblock_10bit.asm:718: warning: label alone on a line without a colon might be in error libavcodec/x86/h264_deblock_10bit.asm:718: warning: label alone on a line without a colon might be in error libavcodec/x86/h264_deblock_10bit.asm:421: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:421: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:421: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:421: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:423: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:423: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:423: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:423: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:915: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:915: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:915: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:915: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:917: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:917: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:917: error: invalid combination of opcode and operands libavcodec/x86/h264_deblock_10bit.asm:917: error: invalid combination of opcode and operands make[1]: *** [libavcodec/x86/h264_deblock_10bit.o] Error 1 make[1]: Leaving directory `/home/antoine/projects/tmp/HandBrake/build/contrib/ffmpeg/ffmpeg-v0.7-1696-gcae4f4b' make: *** [contrib/ffmpeg/.stamp.build] Error 2
Why is it even building those things when I have the libraries installed (the same version) and the development headers are there too..
Anyway, I think I'm done banging my head with this thing.
See also #53 and r434: clearly something fishy going on with window dimensions
handbrake is nuts, it is also downloading and building its own copy of lame, libdvdread, libdca, libass, freetype, libxml2, libmkv, libogg, libsamplerate, libvorbis, libtheora, libmpeg2, mpeg2dec, x264, libbluray, etc All from the configure stage, and without asking! wtf? This is what you have to do on OSX/win32, but on Linux!? Why not build your own gcc and glibc whilst you're at it?
This is completely crazy, I just do not buy the idea that they require exact versions of those libraries: as mentioned previously, the exact same version is already installed, so this looks like just plain laziness or the inability to use autotools/pkgconfig. This is insecure (won't be updated by the package manager), takes 50 times as long as it should, probably uses a static build?, etc.. I was looking for a simple test case, and this is not it. :(
Finally built it and I cannot reproduce the cpu/memory hog or "white window" problem: seems to work fine here.
Do I need to click on something specific? Or can I close this ticket?
Hmm... Well I'm nowadays using Mint Debian, not Ubuntu anymore if that will matter, and I have no server anymore, tough would need to really get new one, when money permits...
I'll test how xpra will behave nowadays and report back. But in general no special stuff is needed to do, just starting handbrake caused it.
contact me if you want a free server account
Can reproduce it with 0.9.6
:
clearing invalid size hint value for base_size: (4294967295, 4294967295) Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768 clearing invalid size hint value for base_size: (4294967295, 4294967295) Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768 clearing invalid size hint value for base_size: (4294967295, 4294967295) Uh-oh, our size doesn't fit window sizing constraints: 1034x768 vs 1024x768
Uh-oh, our size doesn't fit window sizing constraints: 1088x803 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1099x803 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1100x804 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 1100x804 vs 1024x768 Uh-oh, our size doesn't fit window sizing constraints: 2560x1551 vs 1024x768
Looks like we need to try harder to match the right size - this is going to be tricky: the client and server have different constraints..
fixed in r600, feel free to re-open if I've missed something
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/40