Author: tack
Date: Mon Oct 8 14:55:08 2007
New Revision: 2849
Log:
Pass players through gdb if logging level is set to DEBUG. If child
segfaults, automatically dump backtrace.
Modified:
trunk/popcorn/src/backends/mplayer/ipc.py
trunk/popcorn/src/backends/mplayer/player.py
trunk/popcorn/src/backends/xine/player.py
Modified: trunk/popcorn/src/backends/mplayer/ipc.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/ipc.py (original)
+++ trunk/popcorn/src/backends/mplayer/ipc.py Mon Oct 8 14:55:08 2007
@@ -35,9 +35,6 @@
# kaa imports
import kaa.notifier
-# start mplayer in gdb for debugging
-USE_GDB = False
-
# get logging object
log = logging.getLogger('popcorn.mplayer')
@@ -85,14 +82,15 @@
"""
Mplayer child wrapper,
"""
- def __init__(self, command=None):
+ def __init__(self, command=None, gdb = False):
# create argument list
+ self._gdb = gdb
self.args = Arguments("-v -slave -osdlevel 0 -nolirc -nojoystick " +
"-nodouble -fixed-vo -identify -framedrop")
self.filters = []
if not command:
return
- if USE_GDB:
+ if self._gdb:
self._child = kaa.notifier.Process("gdb")
self._command = command
else:
@@ -112,7 +110,7 @@
log.info("spawn: %s %s", self._mp_cmd, ' '.join(args))
- if USE_GDB:
+ if self._gdb:
signal = self._child.start(self._command)
self._child.write("run %s\n" % ' '.join(args))
self._child.signals["stdout"].connect_weak(self._child_handle_line)
@@ -127,10 +125,12 @@
self.quit()
- def _child_handle_line(line):
- if line.startswith("Program received signal SIGSEGV"):
+ def _child_handle_line(self, line):
+ if line.startswith("Program received signal"):
# Mplayer crashed, issue backtrace.
- self._child.write("thread apply all bt\n")
+ self._child.write("thread apply all bt\nquit\n")
+ elif line.startswith("Program exited"):
+ self._child.write("quit\n")
def stop(self):
Modified: trunk/popcorn/src/backends/mplayer/player.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/player.py (original)
+++ trunk/popcorn/src/backends/mplayer/player.py Mon Oct 8 14:55:08 2007
@@ -480,7 +480,7 @@
assert(self._mp_info)
# create mplayer object
- self._mplayer = ChildProcess(self._mp_cmd)
+ self._mplayer = ChildProcess(self._mp_cmd, gdb =
log.getEffectiveLevel() == logging.DEBUG)
# get argument and filter list
args, filters = self._mplayer.args, self._mplayer.filters
Modified: trunk/popcorn/src/backends/xine/player.py
==============================================================================
--- trunk/popcorn/src/backends/xine/player.py (original)
+++ trunk/popcorn/src/backends/xine/player.py Mon Oct 8 14:55:08 2007
@@ -69,7 +69,7 @@
def _child_spawn(self):
# Launch self (-u is unbuffered stdout)
script = os.path.join(os.path.dirname(__file__), 'main.py')
- self._xine = ChildProcess(self, script)
+ self._xine = ChildProcess(self, script, gdb = log.getEffectiveLevel()
== logging.DEBUG)
self._xine.set_stop_command(kaa.notifier.WeakCallback(self._xine.die))
signal = self._xine.start(str(self._osd_shmkey),
str(self._frame_shmkey))
signal.connect_weak(self._child_exited)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog