[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Fix killall -USR2 anaconda writing out a traceback file.



This hasn't worked since the switch to python-meh, though it's looked like
it has worked.  Before, dumpState would cause an exception because it hadn't
been adapted to python-meh.  This exception would then get written out as
/tmp/anaconda-tb-*, which made dumpState look like it worked.
---
 anaconda     |   22 +++++++++++++---------
 exception.py |    2 ++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/anaconda b/anaconda
index 785fa7e..80ef849 100755
--- a/anaconda
+++ b/anaconda
@@ -32,6 +32,7 @@
 
 import sys, os, re, time, subprocess
 from optparse import OptionParser
+from tempfile import mkstemp
 
 # keep up with process ID of miniwm if we start it
 
@@ -473,13 +474,18 @@ class Anaconda:
         self.xdriver = None
 
     def dumpState(self):
-        from exception import AnacondaExceptionDump
+        from meh.dump import ReverseExceptionDump
         from inspect import stack as _stack
+
         # Skip the frames for dumpState and the signal handler.
         stack = _stack()[2:]
         stack.reverse()
-        exn = AnacondaExceptionDump(None, None, stack)
-        exn.write(anaconda)
+        exn = ReverseExceptionDump((None, None, stack), self.mehConfig)
+
+        (fd, filename) = mkstemp("", "anaconda-tb-", "/tmp")
+        fo = os.fdopen(fd, "w")
+
+        exn.write(self, fo)
 
     def writeXdriver(self, instPath="/"):
         # this should go away at some point, but until it does, we
@@ -630,9 +636,6 @@ if __name__ == "__main__":
     signal.signal(signal.SIGINT, signal.SIG_DFL)
     signal.signal(signal.SIGSEGV, isys.handleSegv)
 
-    # add our own additional signal handlers
-    signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
-
     setupEnvironment()
 
     pidfile = open("/var/run/anaconda.pid", "w")
@@ -965,7 +968,10 @@ if __name__ == "__main__":
 
     # comment out the next line to make exceptions non-fatal
     from exception import initExceptionHandling
-    initExceptionHandling(anaconda)
+    anaconda.mehConfig = initExceptionHandling(anaconda)
+
+    # add our own additional signal handlers
+    signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
 
     anaconda.setDispatch()
 
@@ -981,8 +987,6 @@ if __name__ == "__main__":
                fr = None
                            
            if fr:
-               from tempfile import mkstemp
-
                (fw, testcase) = mkstemp(prefix='testcase.py.', dir='/tmp')
                os.write(fw, fr.read())
                fr.close()
diff --git a/exception.py b/exception.py
index 7decf22..b6356ad 100644
--- a/exception.py
+++ b/exception.py
@@ -125,3 +125,5 @@ def initExceptionHandling(anaconda):
                              "/proc/cmdline"])
     handler = AnacondaExceptionHandler(conf, anaconda.intf, ReverseExceptionDump)
     handler.install(anaconda)
+
+    return conf
-- 
1.6.5.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]