add excepthooks, hoping to force a backtrace log when qt5 SIGABRTs
This commit is contained in:
@@ -36,6 +36,10 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
from .qeapp import ElectrumQmlApplication
|
from .qeapp import ElectrumQmlApplication
|
||||||
|
|
||||||
|
class UncaughtException(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ElectrumGui(Logger):
|
class ElectrumGui(Logger):
|
||||||
|
|
||||||
@profiler
|
@profiler
|
||||||
@@ -71,6 +75,9 @@ class ElectrumGui(Logger):
|
|||||||
self.timer.setInterval(500) # msec
|
self.timer.setInterval(500) # msec
|
||||||
self.timer.timeout.connect(lambda: None) # periodically enter python scope
|
self.timer.timeout.connect(lambda: None) # periodically enter python scope
|
||||||
|
|
||||||
|
sys.excepthook = self.excepthook
|
||||||
|
threading.excepthook = self.texcepthook
|
||||||
|
|
||||||
# Initialize any QML plugins
|
# Initialize any QML plugins
|
||||||
run_hook('init_qml', self)
|
run_hook('init_qml', self)
|
||||||
self.app.engine.load('electrum/gui/qml/components/main.qml')
|
self.app.engine.load('electrum/gui/qml/components/main.qml')
|
||||||
@@ -78,6 +85,18 @@ class ElectrumGui(Logger):
|
|||||||
def close(self):
|
def close(self):
|
||||||
self.app.quit()
|
self.app.quit()
|
||||||
|
|
||||||
|
def excepthook(self, exc_type, exc_value, exc_tb):
|
||||||
|
tb = "".join(traceback.format_exception(exc_type, exc_value, exc_tb))
|
||||||
|
self.logger.exception(tb)
|
||||||
|
self.app._valid = False
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
def texcepthook(self, arg):
|
||||||
|
tb = "".join(traceback.format_exception(arg.exc_type, arg.exc_value, arg.exc_tb))
|
||||||
|
self.logger.exception(tb)
|
||||||
|
self.app._valid = False
|
||||||
|
self.close()
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
if not self.app._valid:
|
if not self.app._valid:
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user