Fix the broken thread debugging
Using threading._VERBOSE=1 is broken since python 2.6 till at least python 3.2, (http://bugs.python.org/issue4188) so we can't use it for our thread debugging. Remove the usage of threading._VERBOSE, and implement a "light thread debug log" that for now outputs information when a new thread is being registered and when it is being unregistered. I am sure we will be able to add more thread debugging information over the time. Besides '-d thread' this will re-enable the usage of -d 'all' for the most verbose debugging of all categories. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
parent
5c7d7ee445
commit
deab62fbd8
@ -21,6 +21,7 @@ Changes
|
|||||||
Bug Fixes
|
Bug Fixes
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
* Fix the offlineimap crash when invoking debug option 'thread'
|
||||||
|
|
||||||
Pending for the next major release
|
Pending for the next major release
|
||||||
==================================
|
==================================
|
||||||
|
@ -226,8 +226,6 @@ class OfflineImap:
|
|||||||
ui.add_debug(type)
|
ui.add_debug(type)
|
||||||
if type.lower() == 'imap':
|
if type.lower() == 'imap':
|
||||||
imaplib.Debug = 5
|
imaplib.Debug = 5
|
||||||
if type.lower() == 'thread':
|
|
||||||
threading._VERBOSE = 1
|
|
||||||
|
|
||||||
if options.runonce:
|
if options.runonce:
|
||||||
# FIXME: maybe need a better
|
# FIXME: maybe need a better
|
||||||
|
@ -89,11 +89,14 @@ class UIBase:
|
|||||||
(threading.currentThread().getName(),
|
(threading.currentThread().getName(),
|
||||||
s.getthreadaccount(s), account)
|
s.getthreadaccount(s), account)
|
||||||
s.threadaccounts[threading.currentThread()] = account
|
s.threadaccounts[threading.currentThread()] = account
|
||||||
|
s.debug('thread', "Register new thread '%s' (account '%s')" %\
|
||||||
|
(threading.currentThread().getName(), account))
|
||||||
|
|
||||||
def unregisterthread(s, thr):
|
def unregisterthread(s, thr):
|
||||||
"""Recognizes a thread has exited."""
|
"""Recognizes a thread has exited."""
|
||||||
if s.threadaccounts.has_key(thr):
|
if s.threadaccounts.has_key(thr):
|
||||||
del s.threadaccounts[thr]
|
del s.threadaccounts[thr]
|
||||||
|
s.debug('thread', "Unregister thread '%s'" % thr.getName())
|
||||||
|
|
||||||
def getthreadaccount(s, thr = None):
|
def getthreadaccount(s, thr = None):
|
||||||
if not thr:
|
if not thr:
|
||||||
|
Loading…
Reference in New Issue
Block a user