ITADN

kart frequently crashes in GitHub Actions (reading environment variables)

#1085Closedschmidtnz 创建于 2026-01-27
bug
S
schmidtnzcommented
Expected behaviour: Environment variables unrelated to `kart` do not have an impact on the program. Observed behaviour: `kart` attempts to read environment variables here: https://github.com/koordinates/kart/blob/eae35e1d06273d9cd2638cefd5fdc50250971aa4/kart/helper.py#L151 When GitHub Actions (frequently) has corrupt env variables, `kart` crashes as follows, even if the environment variable has nothing to do with `kart`. See values for `GITHUB_ACTION_REPOSITORY`, `GITHUB_ACTION_REF` below. ``` Traceback (most recent call last): File "kart/helper.py", line 151, in helper File "json/__init__.py", line 341, in loads UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 6068: invalid start byte During handling of the above exception, another exception occurred: Traceback (most recent call last): File "kart_cli.py", line 4, in <module> File "kart/cli.py", line 340, in entrypoint File "click/core.py", line 1157, in __call__ File "click/core.py", line 1078, in main File "kart/cli_util.py", line 72, in invoke File "click/core.py", line 1688, in invoke File "click/core.py", line 1434, in invoke File "click/core.py", line 783, in invoke File "click/decorators.py", line 33, in new_func File "kart/helper.py", line 153, in helper RuntimeError: ('kart helper: Unable to read command from kart_cli_helper', UnicodeDecodeError('utf-8', b'{"pid":20, "environ":{ "GITHUB_WORKSPACE":"sanitized", "HOSTNAME":"sanitized", "GITHUB_PATH":"sanitized", "GITHUB_ACTION":"sanitized", "GITHUB_RUN_NUMBER":"sanitized", "RUNNER_NAME":"sanitized", "GITHUB_REPOSITORY_OWNER_ID":"sanitized", "GITHUB_TRIGGERING_ACTOR":"sanitized", "GITHUB_REF_TYPE":"sanitized", "PWD":"sanitized", "GITHUB_REPOSITORY_ID":"sanitized", "GITHUB_ACTIONS":"sanitized", "GITHUB_SHA":"sanitized", "GITHUB_WORKFLOW_REF":"sanitized", "RUNNER_ENVIRONMENT":"sanitized", "GITHUB_REF":"sanitized", "LD_PRELOAD":"sanitized", "RUNNER_OS":"Linux", "GITHUB_REF_PROTECTED":"sanitized", "HOME":"sanitized", "GITHUB_API_URL":"sanitized", "ACTIONS_ID_TOKEN_REQUEST_TOKEN":"sanitized", "RUNNER_ARCH":"X64", "RUNNER_TEMP":"sanitized", "GITHUB_STATE":"sanitized", "GITHUB_ENV":"sanitized", "GITHUB_EVENT_PATH":"sanitized", "GITHUB_EVENT_NAME":"sanitized", "GITHUB_RUN_ID":"sanitized", "GITHUB_STEP_SUMMARY":"sanitized", "GITHUB_ACTOR":"sanitized", "GITHUB_RUN_ATTEMPT":"sanitized", "GITHUB_GRAPHQL_URL":"sanitized", "ENVIRONMENT":"sanitized", "GITHUB_SERVER_URL":"sanitized", "SHLVL":"sanitized", "GITHUB_ACTOR_ID":"sanitized", "RUNNER_TOOL_CACHE":"sanitized", "GITHUB_WORKFLOW_SHA":"sanitized", "GIT_VERSION":"v0.2.0-2-g2a2a6ab", "GITHUB_REF_NAME":"sanitized", "GITHUB_JOB":"sanitized", "ACTIONS_ID_TOKEN_REQUEST_URL":"sanitized", "GIT_HASH":"sanitized", "GITHUB_REPOSITORY":"sanitized", "GITHUB_RETENTION_DAYS":"sanitized", "RUNNER_WORKSPACE":"sanitized", "GITHUB_ACTION_REPOSITORY":"`i\x84?", "PATH":"sanitized", "GITHUB_BASE_REF":"sanitized", "CI":"sanitized", "GITHUB_REPOSITORY_OWNER":"sanitized", "GITHUB_HEAD_REF":"sanitized", "GITHUB_ACTION_REF":"\xa0j\x84?", "GITHUB_WORKFLOW":"sanitized", "GITHUB_OUTPUT":"sanitized", "_":"sanitized"}, "argv":["kart", "--version"], "semid":0}', 6068, 6069, 'invalid start byte'), 'Payload:\nb\'{"pid":20, "environ":{"GITHUB_WORKSPACE":"sanitized", "HOSTNAME":"sanitized", "GITHUB_PATH":"sanitized", "GITHUB_ACTION":"sanitized", "GITHUB_RUN_NUMBER":"sanitized", "RUNNER_NAME":"sanitized", "GITHUB_REPOSITORY_OWNER_ID":"sanitized", "GITHUB_TRIGGERING_ACTOR":"sanitized", "GITHUB_REF_TYPE":"sanitized", "PWD":"sanitized", "GITHUB_REPOSITORY_ID":"sanitized", "GITHUB_ACTIONS":"sanitized", "GITHUB_SHA":"sanitized", "GITHUB_WORKFLOW_REF":"sanitized", "RUNNER_ENVIRONMENT":"sanitized", "GITHUB_REF":"sanitized", "LD_PRELOAD":"sanitized", "RUNNER_OS":"Linux", "GITHUB_REF_PROTECTED":"sanitized", "HOME":"sanitized", "GITHUB_API_URL":"sanitized", "ACTIONS_ID_TOKEN_REQUEST_TOKEN":"sanitized", "RUNNER_ARCH":"X64", "RUNNER_TEMP":"sanitized", "GITHUB_STATE":"sanitized", "GITHUB_ENV":"sanitized", "GITHUB_EVENT_PATH":"sanitized", "GITHUB_EVENT_NAME":"sanitized", "GITHUB_RUN_ID":"sanitized", "GITHUB_STEP_SUMMARY":"sanitized", "GITHUB_ACTOR":"sanitized", "GITHUB_RUN_ATTEMPT":"sanitized", "GITHUB_GRAPHQL_URL":"sanitized", "ENVIRONMENT":"sanitized", "GITHUB_SERVER_URL":"sanitized", "SHLVL":"sanitized", "GITHUB_ACTOR_ID":"sanitized", "RUNNER_TOOL_CACHE":"sanitized", "GITHUB_WORKFLOW_SHA":"sanitized", "GIT_VERSION":"v0.2.0-2-g2a2a6ab", "GITHUB_REF_NAME":"sanitized", "GITHUB_JOB":"sanitized", "ACTIONS_ID_TOKEN_REQUEST_URL":"sanitized", "GIT_HASH":"sanitized", "GITHUB_REPOSITORY":"sanitized", "GITHUB_RETENTION_DAYS":"sanitized", "RUNNER_WORKSPACE":"sanitized", "GITHUB_ACTION_REPOSITORY":"`i\\x84?", "PATH":"sanitized", "GITHUB_BASE_REF":"sanitized", "CI":"sanitized", "GITHUB_REPOSITORY_OWNER":"sanitized", "GITHUB_HEAD_REF":"sanitized", "GITHUB_ACTION_REF":"\\xa0j\\x84?", "GITHUB_WORKFLOW":"sanitized", "GITHUB_OUTPUT":"sanitized", "_":"sanitized"}, "argv":["kart", "--version"], "semid":0}\'') Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'flush' Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'flush' ``` (sanitized and formatted for easier reading)
关闭于 2026-03-04 2 条评论