URI: 
       tdaemon.run_gui: make sure to exit process on exception - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 3d42fca86ee8a62baad85772b9a0a3e7427ba9d0
   DIR parent 300888f21cdefe8cb578c1c7d76ff80351267fb9
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Wed, 19 Feb 2020 15:45:36 +0100
       
       daemon.run_gui: make sure to exit process on exception
       
       previously, if GUI-related imports raised, the GUI would not start
       but the process would not exit (e.g. asyncio event loop would go on)
       
       Traceback (most recent call last):
         File "...\electrum\electrum\daemon.py", line 517, in run_gui
           gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
         File "...\electrum\electrum\gui\qt\__init__.py", line 39, in <module>
           from PyQt5.QtGui import QGuiApplication
       ImportError: DLL load failed while importing QtGui: The specified module could not be found.
       
       Diffstat:
         M electrum/daemon.py                  |      10 ++++++----
         M run_electrum                        |       9 +++++++--
       
       2 files changed, 13 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/electrum/daemon.py b/electrum/daemon.py
       t@@ -513,11 +513,13 @@ class Daemon(Logger):
                if gui_name in ['lite', 'classic']:
                    gui_name = 'qt'
                self.logger.info(f'launching GUI: {gui_name}')
       -        gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
       -        self.gui_object = gui.ElectrumGui(config, self, plugins)
                try:
       +            gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
       +            self.gui_object = gui.ElectrumGui(config, self, plugins)
                    self.gui_object.main()
                except BaseException as e:
       -            self.logger.exception('')
       +            self.logger.error(f'GUI raised exception: {repr(e)}. shutting down.')
       +            raise
       +        finally:
                    # app will exit now
       -        self.on_stop()
       +            self.on_stop()
   DIR diff --git a/run_electrum b/run_electrum
       t@@ -370,8 +370,13 @@ if __name__ == '__main__':
                if fd is not None:
                    plugins = init_plugins(config, config.get('gui', 'qt'))
                    d = daemon.Daemon(config, fd)
       -            d.run_gui(config, plugins)
       -            sys_exit(0)
       +            try:
       +                d.run_gui(config, plugins)
       +            except BaseException as e:
       +                _logger.exception('daemon.run_gui errored')
       +                sys_exit(1)
       +            else:
       +                sys_exit(0)
                else:
                    result = daemon.request(config, 'gui', (config_options,))