kovidgoyal/kitty · info

Failed to process update check data {raw!r}, with error: {e}

Error message

Failed to process update check data {raw!r}, with error: {e}

What it means

The update-check subprocess produced output that kitty could read but could not parse as a release version. The raw payload is logged; the check is abandoned for this run.

Source

Thrown at kitty/boss.py:3511

                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:
                a(f'In file {file}:')
            [a(format_bad_line(x)) for x in groups[file]]
        if misc_errors:
            a('In final effective configuration:')
            for line in misc_errors:

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Inspect the logged raw payload to see what was actually returned
  2. Fix proxy/network so the release URL returns the expected payload
  3. Disable with `update_check_period 0`
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: process_current_release() raises on malformed data — e.g. a captive-portal HTML page, proxy error page, or unexpected JSON/text being returned instead of a version string.

Common situations: Corporate proxies, captive portals, DNS hijacking returning HTML for any request.

Related errors


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