diff --git a/qubesmanager/main.py b/qubesmanager/main.py
index c6b80bc..36b711c 100755
--- a/qubesmanager/main.py
+++ b/qubesmanager/main.py
@@ -1382,14 +1382,28 @@ def handle_exception( exc_type, exc_value, exc_traceback ):
filename = os.path.basename( filename )
error = "%s: %s" % ( exc_type.__name__, exc_value )
- QMessageBox.critical(None, "Houston, we have a problem...",
- "Whoops. A critical error has occured. This is most likely a bug "
- "in Qubes Manager.
"
- "%s" % error +
- "at line %d of file %s.
"
- % ( line, filename ))
+ strace = ""
+ stacktrace = traceback.extract_tb( exc_traceback )
+ while len(stacktrace) > 0:
+ (filename, line, func, txt) = stacktrace.pop()
+ strace += "----\n"
+ strace += "line: %s\n" %txt
+ strace += "func: %s\n" %func
+ strace += "line no.: %d\n" %line
+ strace += "file: %s\n" %filename
+
+ msg_box = QMessageBox()
+ msg_box.setDetailedText(strace)
+ msg_box.setIcon(QMessageBox.Critical)
+ msg_box.setWindowTitle( "Houston, we have a problem...")
+ msg_box.setText("Whoops. A critical error has occured. This is most likely a bug "
+ "in Qubes Manager.
"
+ "%s" % error +
+ "
at line %d
of file %s.
"
+ % ( line, filename ))
+
+ msg_box.exec_()
- #sys.exit(1)
def main():
diff --git a/qubesmanager/settings.py b/qubesmanager/settings.py
index 470d6fd..e21aff3 100644
--- a/qubesmanager/settings.py
+++ b/qubesmanager/settings.py
@@ -630,12 +630,27 @@ def handle_exception( exc_type, exc_value, exc_traceback ):
filename = os.path.basename( filename )
error = "%s: %s" % ( exc_type.__name__, exc_value )
- QMessageBox.critical(None, "Houston, we have a problem...",
- "Whoops. A critical error has occured. This is most likely a bug "
- "in Qubes VM Settings application.
"
- "%s" % error +
- "at line %d of file %s.
"
- % ( line, filename ))
+ strace = ""
+ stacktrace = traceback.extract_tb( exc_traceback )
+ while len(stacktrace) > 0:
+ (filename, line, func, txt) = stacktrace.pop()
+ strace += "----\n"
+ strace += "line: %s\n" %txt
+ strace += "func: %s\n" %func
+ strace += "line no.: %d\n" %line
+ strace += "file: %s\n" %filename
+
+ msg_box = QMessageBox()
+ msg_box.setDetailedText(strace)
+ msg_box.setIcon(QMessageBox.Critical)
+ msg_box.setWindowTitle( "Houston, we have a problem...")
+ msg_box.setText("Whoops. A critical error has occured. This is most likely a bug "
+ "in Qubes Manager.
"
+ "%s" % error +
+ "
at line %d
of file %s.
"
+ % ( line, filename ))
+
+ msg_box.exec_()
def main():