From 10bf505febd4d0c0f14c224667d187f8d3f0c88d Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 19 Mar 2021 17:52:02 +0100 Subject: Only connect IPC after init has finished Otherwise, if there's a fatal error message shown during init, we try to open something via IPC before we're fully initialized. This can e.g. lead to a KeyError for qtnetwork-download-manager: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/qutebrowser/app.py", line 120, in process_pos_args(args, cwd=cwd, via_ipc=True, File "/usr/lib/python3/dist-packages/qutebrowser/app.py", line 230, in process_pos_args win_id = mainwindow.get_window(via_ipc, force_window=True) File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 89, in get_window window = MainWindow(private=None) File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 220, in __init__ self._init_downloadmanager() File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 350, in _init_downloadmanager qtnetwork_download_manager = objreg.get('qtnetwork-download-manager') File "/usr/lib/python3/dist-packages/qutebrowser/utils/objreg.py", line 249, in get return reg[name] File "/usr/lib/python3.8/collections/__init__.py", line 1010, in __getitem__ raise KeyError(key) KeyError: 'qtnetwork-download-manager' (cherry picked from commit 6c0d8d59647b39ecf3292b125991522d3502db65) --- qutebrowser/app.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 1a18881b5..cdeffa7d3 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -120,13 +120,14 @@ def run(args): log.init.warning( "Backend from the running instance will be used") sys.exit(usertypes.Exit.ok) - else: - quitter.instance.shutting_down.connect(server.shutdown) - server.got_args.connect(lambda args, target_arg, cwd: - process_pos_args(args, cwd=cwd, via_ipc=True, - target_arg=target_arg)) init(args=args) + + quitter.instance.shutting_down.connect(server.shutdown) + server.got_args.connect( + lambda args, target_arg, cwd: + process_pos_args(args, cwd=cwd, via_ipc=True, target_arg=target_arg)) + ret = qt_mainloop() return ret -- cgit v1.2.3-54-g00ecf