[issue6562] OverflowError in RLock.acquire()

2009-07-24 Thread David Roberts

New submission from David Roberts :

I'm getting the following error on Windows in an application I've
written (the error does not occur on Linux):

Exception in thread Thread-4:
Traceback (most recent call last):
 File "C:\Python26\lib\threading.py", line 525, in __bootstrap_inner
   self.run()
 File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tileprovider.py", line 97, in run
   self.__tilecache[tile_id] = Tile(tile)
 File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tilecache.py", line 165, in __setitem__
   with self.__lock:
 File "C:\Python26\lib\threading.py", line 115, in acquire
   me = current_thread()
 File "C:\Python26\lib\threading.py", line 803, in currentThread
   return _active[_get_ident()]
OverflowError: can't convert negative value to unsigned long

Where __lock is an RLock object.

The odd thing is that it only affects a single class (which is derived
from the TileProvider class in tileprovider.py, which in turn is derived
from threading.Thread). This led me to believe there was an error in my
code, but I asked on the mailing list and was told that it is likely a
bug in the threading module.

The Python version is 2.6.2.

--
components: Library (Lib), Windows
messages: 90879
nosy: davidar
severity: normal
status: open
title: OverflowError in RLock.acquire()
type: crash
versions: Python 2.6

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-07-25 Thread David Roberts

David Roberts  added the comment:

thread.get_ident() returns 1192 and 1560 in the cases where there is no
error, and 1316 in the case where the error is thrown. Doesn't seem
particularly unusual, and shows get_ident() isn't throwing the error itself.

I also noticed that there is a warning right before the exception is raised:

C:\Python26\lib\threading.py:803: RuntimeWarning: tp_compare didn't
return -1 or -2 for exception
  return _active[_get_ident()]

I've attached the relevant snippets of code. As you can see
OSMTileProvider (the class that is triggering the exception) doesn't
actually do all that much, and the two other classes derived from
DynamicTileProvider function correctly so I don't understand what it is
about this specific class.

--
Added file: http://bugs.python.org/file14564/tileproviders.py

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-07-25 Thread David Roberts

David Roberts  added the comment:

I haven't been able to isolate the issue. Could someone provide some
insight into what the error could possibly mean so that I have a better
idea of what I'm trying to isolate?

--

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-07-25 Thread David Roberts

David Roberts  added the comment:

If I comment out all occurrences of "with self.__lock:" I then get the
same error in another part of the code:

C:\Python26\lib\threading.py:803: RuntimeWarning: tp_compare didn't
return -1 or -2 for exception
  return _active[_get_ident()]
Exception in thread Thread-4:
Traceback (most recent call last):
  File "C:\Python26\lib\threading.py", line 525, in __bootstrap_inner
self.run()
  File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tileprovider.py", line 82, in run
self.__tasks_available.acquire()
  File "C:\Python26\lib\threading.py", line 115, in acquire
me = current_thread()
  File "C:\Python26\lib\threading.py", line 803, in currentThread
return _active[_get_ident()]
OverflowError: can't convert negative value to unsigned long

Where self.__tasks_available is a threading.Condition.

If I comment out that bit, I then get the following error:

Traceback (most recent call last):
  File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tileprovider.py", line 91, in run
tile = self._load(tile_id)
  File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\dynamictileprovider.py", line 55, in _load
tile_id, True, filext=self.filext)
  File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tilestore.py", line 72, in get_tile_path
prefix = get_media_path(media_id)
  File "C:\Documents and Settings\David\My
Documents\pyzui\pyzui\tilestore.py", line 46, in get_media_path
media_dir = os.path.join(tile_dir, media_hash)
  File "C:\Python26\lib\ntpath.py", line 97, in join
if path[-1] in "/\\":
IndexError: cannot fit 'int' into an index-sized integer

I'm not sure if this error is related to the other errors, but similarly
this error only occurs in this specific thread.

--

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-07-25 Thread David Roberts

David Roberts  added the comment:

Yes, it is the PIL library. Removing calls to Image.open() still results
in the same error - the exception is thrown before it even reaches that
bit of the code anyway.

Another odd thing is that the exception is only thrown on some of the
calls to get_tile_path, every second call to be exact - see the attached
log file.

I'm also attaching the relevant code from tilestore.py.

--
Added file: http://bugs.python.org/file14567/osm.log

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-07-25 Thread David Roberts

Changes by David Roberts :


Added file: http://bugs.python.org/file14568/tilestore.py

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-08-04 Thread David Roberts

David Roberts  added the comment:

I think I've narrowed it down to the ImageQt class provided by PIL -
commenting out the reference to this (in the constructor of the Tile
class referenced by TileProvider.run) stops the errors.

So how do I go about determining where the problem with ImageQt lies?
(It's only ~50 lines, so there can't be too many things that could
possibly go wrong)

--

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6562] OverflowError in RLock.acquire()

2009-08-04 Thread David Roberts

David Roberts  added the comment:

Ok, so if it's a bug in (Py)Qt then I'm not going to worry about it.

I've managed to fix the issue in my case anyway, by (essentially) replacing:
image = Image.open(fname)
image.load()
tile = ImageQt(image)
with (the much more obvious way to do it):
tile = QImage(fname)

--

___
Python tracker 
<http://bugs.python.org/issue6562>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com