From 8778cf63c447d202ddded1230c1907aebb54b198 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 2 Feb 2019 15:47:13 +0530 Subject: [PATCH] Correct fix for ignoring BrokenPipeError --- kitty/boss.py | 4 ++-- kitty/update_check.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/kitty/boss.py b/kitty/boss.py index 6f621e52a..b16c1f25f 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -106,6 +106,7 @@ class Boss: def __init__(self, os_window_id, opts, args, cached_values, new_os_window_trigger): set_draw_minimal_borders(opts) + self.update_check_process = None self.window_id_map = WeakValueDictionary() self.startup_colors = {k: opts[k] for k in opts if isinstance(opts[k], Color)} self.startup_cursor_text_color = opts.cursor_text_color @@ -778,6 +779,7 @@ class Boss: def destroy(self): self.shutting_down = True self.child_monitor.shutdown_monitor() + self.update_check_process = None del self.child_monitor for tm in self.os_window_map.values(): tm.destroy() @@ -992,8 +994,6 @@ class Boss: from .update_check import process_current_release try: raw = update_check_process.stdout.read().decode('utf-8') - except BrokenPipeError: - pass except Exception as e: log_error('Failed to read data from update check process, with error: {}'.format(e)) else: diff --git a/kitty/update_check.py b/kitty/update_check.py index 4f6ea7fbb..62c480825 100644 --- a/kitty/update_check.py +++ b/kitty/update_check.py @@ -96,11 +96,21 @@ def process_current_release(raw): notify_new_version(release_version) +def run_worker(): + import time + import random + time.sleep(random.randint(1000, 4000) / 1000) + try: + print(get_released_version()) + except BrokenPipeError: + pass # happens if parent process is killed before us + + def update_check(timer_id=None): try: p = subprocess.Popen([ kitty_exe(), '+runpy', - 'from kitty.update_check import *; import time, random; time.sleep(random.randint(1000, 4000) / 1000); print(get_released_version())' + 'from kitty.update_check import run_worker; run_worker()' ], stdout=subprocess.PIPE) except EnvironmentError as e: log_error('Failed to run kitty for update check, with error: {}'.format(e))