Package: python-xlib
Version: 0.12-5
Severity: normal
Tags: patch

In many cases when trying to run a program which uses python-xlib you get a
traceback similar to...

Traceback (most recent call last):
  File "./stylebox", line 31, in ?
    s = StyleBox()
  File "/home/jae/Current/Openbox/stylebox/StyleBox.py", line 668, in
__init__
    self.display = Display()
  File "/usr/lib/python2.3/site-packages/Xlib/display.py", line 80, in
__init__
    self.display = _BaseDisplay(display)
  File "/usr/lib/python2.3/site-packages/Xlib/display.py", line 67, in
__init__
    apply(protocol.display.Display.__init__, (self, ) + args, keys)
  File "/usr/lib/python2.3/site-packages/Xlib/protocol/display.py", line
123, in __init__
    self.default_screen = min(self.default_screen, len(self.info.roots) -
1)
  File "/usr/lib/python2.3/site-packages/Xlib/protocol/rq.py", line 1371,
in __getattr__
    raise AttributeError(attr)
AttributeError: roots


Found a solution for this on the pypanel forum from pypanel's author. To
quote...

http://sourceforge.net/forum/message.php?msg_id=3195860
--------------
This is a problem with Python-Xlib. Under certain conditions, the receive
buffer size isn't large enough. To fix it, open the following file - 
 
/usr/lib/python<version>/site-packages/Xlib/protocol/display.py 
 
and change line 530 from - 
 
recv = self.socket.recv(2048) 
 
to - 
 
recv = self.socket.recv(4096)  
 
 
4096 should be large enough .. 
--------------

This fixed the problem I was having. I have included a patch doing just
this.


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.15-ck3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages python-xlib depends on:
ii  python                        2.3.5-5    An interactive high-level object-o
ii  python2.3-xlib                0.12-5     Interface for Python to the X11 Pr

python-xlib recommends no packages.

-- no debconf information
--- display.py.orig     2006-03-17 12:53:13.000000000 -0500
+++ display.py  2006-03-17 12:52:54.000000000 -0500
@@ -528,7 +528,7 @@
                # We're the recieving thread, parse the data
                if recieving:
                    try:
-                       recv = self.socket.recv(2048)
+                       recv = self.socket.recv(4096)
                    except socket.error, err:
                        self.close_internal('server: %s' % err[1])
                        raise self.socket_error

Reply via email to