[Python-modules-team] Bug#876728: UnicodeDecodeError in Xlib/xobject/drawable.py
Mike Gabriel
mike.gabriel at das-netzwerkteam.de
Mon Sep 25 10:31:02 UTC 2017
Package: python-xlib
Severity: important
Tags: patch
X-Debbugs-Cc: andrewsh at debian.org
Hi,
CC:-ing Andrew Shadura, as he has been the last uploader in
debian/changelog of python-xlibs.
recently, in Debian stretch, I started seeing errors like below with
my X2Go client implementation pyhoca-gui / pyhoca-cli.
I started porting pyhoca and python-x2go (the underlying module) to
Python 3 over the last weekend and realized that in Python 3 the
issues did not occur anymore.
However, in Python 2 they persist:
```
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 534, in run
result = self._run(*self.args, **self.kwargs)
File
"/home/mike/MyDocuments/4projects/x2go-upstream/pyhoca-gui/x2go/backends/terminal/plain.py", line 1092, in
_find_session_window
window = utils.find_session_window(self.session_info.name)
File
"/home/mike/MyDocuments/4projects/x2go-upstream/pyhoca-gui/x2go/utils.py",
line 639, in find_session_window
name = window.get_wm_name()
File "/usr/lib/python2.7/dist-packages/Xlib/xobject/drawable.py",
line 636, in get_wm_name
d = self.get_full_property(Xatom.WM_NAME, Xatom.STRING)
File "/usr/lib/python2.7/dist-packages/Xlib/xobject/drawable.py",
line 458, in get_full_property
val = val + prop.value
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position
29: ordinal not in range(128)
<Greenlet at 0x7fa0fb3315f0: <bound method
X2GoTerminalSession._find_session_window of
<x2go.backends.terminal.plain.X2GoTerminalSession object at
0x7fa0f9490410>>(timeout=60)> failed with UnicodeDecodeError
```
The underlying cause for this issue is in Xlib/protocol/rq.py. The
patch below fixes the issue:
The patch gets applied in String8.parse_binary_value().
```
--- rq.py 2015-08-25 17:58:11.000000000 +0200
+++ rq.py.fixed 2017-09-25 12:18:58.172941197 +0200
@@ -415,8 +415,14 @@
s = s.decode('UTF-8')
except UnicodeDecodeError:
pass # return as bytes
- return s, data[slen:]
+ d = data[slen:]
+ try:
+ d = d.decode('UTF-8')
+ except UnicodeDecodeError:
+ pass
+
+ return s, d
```
Without the above patch, sometimes <str> types get returned, sometime
<unicode> types. With the above patch, everything is returned as
<unicode>.
Ideally, this fix should also go into Debian stretch. Thanks!
As no real persons seems to be maintaining the python-xlib package (no
Uploaders: field), nor has it been orphaned, I'll consider fixing the
above issue myself as an NMU or team upload (unless someone replies to
my report).
I'd be really happy about a second pair of eyes to look at this issue,
before I upload this.
Thanks!
Mike
--
DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
mobile: +49 (1520) 1976 148
landline: +49 (4354) 8390 139
GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22 0782 9AF4 6B30 2577 1B31
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 851 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.alioth.debian.org/pipermail/python-modules-team/attachments/20170925/805a91fe/attachment.sig>
More information about the Python-modules-team
mailing list