kart frequently crashes in GitHub Actions (reading environment variables)
bug
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 条评论