kovidgoyal/kitty · info

Failed to read data from update check process, with error: {

Error message

Failed to read data from update check process, with error: {e}

What it means

kitty spawns a background process to check for new releases; when reading the child's stdout fails (I/O error, decode failure, child died), kitty logs this and skips the update check. Purely informational.

Source

Thrown at kitty/boss.py:3506

        if callback is not None:
            try:
                callback(exit_status, None)
            except Exception:
                import traceback

                traceback.print_exc()
            return

        update_check_process = self.update_check_process
        if update_check_process is not None and pid == update_check_process.pid:
            self.update_check_process = None
            from .update_check import process_current_release

            try:
                assert update_check_process.stdout is not None
                raw = update_check_process.stdout.read().decode('utf-8')
            except Exception as e:
                log_error(f'Failed to read data from update check process, with error: {e}')
            else:
                try:
                    process_current_release(raw)
                except Exception as e:
                    log_error(f'Failed to process update check data {raw!r}, with error: {e}')

    def show_bad_config_lines(self, bad_lines: Iterable[BadLine], misc_errors: Iterable[str] = ()) -> None:

        def format_bad_line(bad_line: BadLine) -> str:
            return f'{bad_line.number}:{bad_line.exception} in line: {bad_line.line}\n'

        groups: dict[str, list[BadLine]] = {}
        for bl in bad_lines:
            groups.setdefault(bl.file, []).append(bl)
        ans: list[str] = []
        a = ans.append
        for file in sorted(groups):
            if file:

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Ignore it — harmless
  2. Set `update_check_period 0` in kitty.conf to disable the check entirely
  3. Check network/proxy settings if you want update checks to work
Defensive patterns

Strategy: fallback

Validate before calling

# kitty.conf: disable the update check to avoid the subprocess entirely
# update_check_period 0

Prevention

When it happens

Trigger: The update-check subprocess (curl or kitty's downloader) exits abnormally, its stdout pipe breaks, or output is not valid UTF-8; also triggered when update_check_period triggers while offline.

Common situations: Offline machine, sandboxed environment blocking the check, or a proxy returning binary garbage.

Related errors


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/5ee3160571fad625. Report an issue: GitHub.