From a386e6d867bb9216413e532c715479b9b7ff02a1 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 19 May 2017 14:59:22 +0200 Subject: [PATCH] Dump stacktrace for all threads in CrashReport CURA-3836 This helps debugging issues like CURA-3836 --- cura/CrashHandler.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index 4048b409a7..7008ba64d2 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -2,6 +2,9 @@ import sys import platform import traceback import webbrowser +import faulthandler +import tempfile +import os import urllib from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QCoreApplication @@ -91,6 +94,17 @@ def show(exception_type, value, tb): crash_info = "Version: {0}\nPlatform: {1}\nQt: {2}\nPyQt: {3}\n\nException:\n{4}" crash_info = crash_info.format(version, platform.platform(), QT_VERSION_STR, PYQT_VERSION_STR, trace) + tmp_file_fd, tmp_file_path = tempfile.mkstemp(prefix = "cura-crash", text = True) + os.close(tmp_file_fd) + with open(tmp_file_path, "w") as f: + faulthandler.dump_traceback(f, all_threads=True) + with open(tmp_file_path, "r") as f: + data = f.read() + + msg = "-------------------------\n" + msg += data + crash_info += "\n\n" + msg + textarea.setText(crash_info) buttons = QDialogButtonBox(QDialogButtonBox.Close, dialog)