Use thread traceback logger from Pykka 1.1

This commit is contained in:
Stein Magnus Jodal 2013-03-24 00:23:50 +01:00
parent fc76318f20
commit c90322f1e2
4 changed files with 8 additions and 32 deletions

View File

@ -10,6 +10,10 @@ v0.13.0 (in development)
(in development)
**Dependencies**
- Pykka >= 1.1 is now required.
**Core**
- Log a warning if a track isn't playable to make it more obvious that backend

View File

@ -9,6 +9,8 @@ import sys
import gobject
gobject.threads_init()
import pykka.debug
# Extract any non-GStreamer arguments, and leave the GStreamer arguments for
# processing by GStreamer. This needs to be done before GStreamer is imported,
@ -48,9 +50,7 @@ def main():
options = parse_options()
if options.debug_thread or settings.DEBUG_THREAD:
debug_thread = process.DebugThread()
debug_thread.start()
signal.signal(signal.SIGUSR1, debug_thread.handler)
signal.signal(signal.SIGUSR1, pykka.debug.log_thread_tracebacks)
try:
log.setup_logging(options.verbosity_level, options.save_debug_log)

View File

@ -2,10 +2,8 @@ from __future__ import unicode_literals
import logging
import signal
import sys
import thread
import threading
import traceback
from pykka import ActorDeadError
from pykka.registry import ActorRegistry
@ -79,29 +77,3 @@ class BaseThread(threading.Thread):
def run_inside_try(self):
raise NotImplementedError
class DebugThread(threading.Thread):
daemon = True
name = 'DebugThread'
event = threading.Event()
def handler(self, signum, frame):
logger.info('Got %s signal', SIGNALS[signum])
self.event.set()
def run(self):
while True:
self.event.wait()
threads = dict((t.ident, t.name) for t in threading.enumerate())
for ident, frame in sys._current_frames().items():
if self.ident != ident:
stack = ''.join(traceback.format_stack(frame))
logger.debug(
'Current state of %s (%s):\n%s',
threads.get(ident, '?'), ident, stack)
del frame
self.event.clear()

View File

@ -1,2 +1,2 @@
Pykka >= 1.0
Pykka >= 1.1
# Available as python-pykka from apt.mopidy.com