⚙️ Команда вернула ноль. Заметка исчезла.
Две
git notes add запускают одновременно на разные коммиты. Обе выходят с кодом 0. Одна заметка при этом пропадает.Три вещи, за которые зацепился:
— Частота. На обычной Linux-машине заметка теряется в 25 запусках из 30. Это не экзотика на странном железе.
— Причина. Второй процесс прочитал ссылку на заметки раньше, чем первый её сохранил, и записал свою версию сверху. Одна строка в notes-utils.c, где ref обновляют без проверки под блокировкой.
— След. Падение — 2936 шагов и 1937 событий в одном прогоне. Глазами такое не листается.
Нашлось не руками: детерминированная виртуалка гоняет один и тот же сценарий под разными расписаниями потоков, пока не упадёт, и сужает сбой до конкретного шага.
Патч автор уже отправил в апстрим, репозиторий тут.
Код возврата — не отчёт о работе.
#git #опенсорс
Просмотры: 9