3.3 KB · updated 2026-07-31 · md

v0.19.1.ru.md

docs/i18n/release-notes/v0.19.1.ru.md

Tesserae v0.19.1 — doctor перестаёт сомневаться в живых демонах

<!-- translations:start -->

한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Выпущено 2026-07-11 · PyPI · GitHub release · pip install --upgrade tesserae==0.19.1

Одно исправление бага, заслуживающее патч-релиза, потому что на его основе мог действовать doctor --fix.

Баг

На macOS идентичность pidfile движка опирается на ps -o lstart=, чей вывод зависит от локали. Демон, запущенный в оболочке с корейской локалью, записывает 2026년 7월 11일…; проверка, выполняемая под английской локалью, читает Sat Jul 11… для того же момента времени. Несовпадение интерпретировалось как переиспользование PID, поэтому tesserae doctor сообщал о живом демоне движка как об устаревшем pidfile — а --fix предлагал удалить pidfile прямо из-под работающего процесса, открывая дорогу второму демону.

Исправление

Вызов ps закреплён за LC_ALL=C, так что отныне писатель и читатель всегда отображают время старта одинаково. Для pidfile, записанных более ранними сборками, owner_is_alive получает одностороннее спасение: когда представления времени старта расходятся, точное совпадение полной командной строки восстанавливает вердикт «жив». Спасение может только расширять «жив» — по-настоящему переиспользованный PID по-прежнему читается как устаревший, потому что различаются оба сигнала идентичности.

Обнаружено вживую на машине с корейской локалью через считанные минуты после запуска демона движка 0.19.0; покрыто регрессионными тестами в обе стороны (несовпадение локалей → жив, настоящее переиспользование PID → устаревший) плюс защита на уровне исходников, что вызов ps остаётся закреплённым за локалью.