{"record":{"id":"41a965f534f500af","repo":"kovidgoyal/kitty","slug":"failed-to-process-update-check-data-raw-r-with","errorCode":null,"errorMessage":"Failed to process update check data {raw!r}, with error: {e}","messagePattern":"Failed to process update check data (.+?), with error: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"kitty/boss.py","lineNumber":3511,"sourceCode":"\n                traceback.print_exc()\n            return\n\n        update_check_process = self.update_check_process\n        if update_check_process is not None and pid == update_check_process.pid:\n            self.update_check_process = None\n            from .update_check import process_current_release\n\n            try:\n                assert update_check_process.stdout is not None\n                raw = update_check_process.stdout.read().decode('utf-8')\n            except Exception as e:\n                log_error(f'Failed to read data from update check process, with error: {e}')\n            else:\n                try:\n                    process_current_release(raw)\n                except Exception as e:\n                    log_error(f'Failed to process update check data {raw!r}, with error: {e}')\n\n    def show_bad_config_lines(self, bad_lines: Iterable[BadLine], misc_errors: Iterable[str] = ()) -> None:\n\n        def format_bad_line(bad_line: BadLine) -> str:\n            return f'{bad_line.number}:{bad_line.exception} in line: {bad_line.line}\\n'\n\n        groups: dict[str, list[BadLine]] = {}\n        for bl in bad_lines:\n            groups.setdefault(bl.file, []).append(bl)\n        ans: list[str] = []\n        a = ans.append\n        for file in sorted(groups):\n            if file:\n                a(f'In file {file}:')\n            [a(format_bad_line(x)) for x in groups[file]]\n        if misc_errors:\n            a('In final effective configuration:')\n            for line in misc_errors:","sourceCodeStart":3493,"sourceCodeEnd":3529,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/boss.py#L3493-L3529","documentation":"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.","triggerScenarios":"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.","commonSituations":"Corporate proxies, captive portals, DNS hijacking returning HTML for any request.","solutions":["Inspect the logged raw payload to see what was actually returned","Fix proxy/network so the release URL returns the expected payload","Disable with `update_check_period 0`"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Disable update_check_period if behind a proxy that mangles responses","Treat the log line as a network diagnostics hint, not an app error"],"tags":["kitty","update-check","parsing","network"],"backgroundTag":"unexpected-response-parsing-failed","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}