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

Reply via email to