К обсуждениям

Python 3.15 RC1: C API guard для потока во время finalization

Редакция VOne Технологии

Практическая проверка Python 3.15 RC1: как проверить PyInterpreterGuard и PyThreadState EnsureFromView в extension при завершении Python 3.15. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.

Обычный вызов не покрывает shutdown

PEP 788 вводит guard, view и thread-state APIs, чтобы native code мог безопасно прикрепиться к живому интерпретатору и не зависнуть на finalization. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: Фоновый native thread иногда входит в Python API одновременно с shutdown; обычный тест функции зелёный, а редкий hang или use-after-finalize появляется только на границе завершения. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.

Barrier вместо случайного sleep

Рекомендуемый fixture: собрать учебный extension, который запускает один native thread, синхронизируется двумя barrier и прикрепляется через view; весь сценарий выполнять в дочернем процессе с коротким deadline. Дайте ему метку T23-09, отдельный temp root и короткий deadline. Входы должны быть синтетическими, повторяемыми и минимальными; каждый новый запуск получает новые объекты и процесс, если cache или global state способны изменить наблюдение. До опыта запишите точную команду и ожидаемый class результата. Не включайте рабочие конфиги, адреса, токены, персональные строки, production PID или полные environment dumps.

Последовательность A-B-A2

Опровергающий маршрут: вариант A освобождает thread-state до shutdown, B просит attach после начала финализации, A2 повторяет чистый путь; фиксировать exit code, timeout и sanitizer без бесконечного retry. Собирайте строки формата «момент attach | guard жив | token получен | callback выполнен | release выполнен | exit code | sanitizer». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.

Deadline и освобождение token

Зелёный критерий сформулирован заранее: контроль завершается, поздняя ветка получает документированную ошибку или отказ без hang, а все token/guard освобождаются до deadline. Ветка not reproduced означает только отсутствие симптома в этой версии fixture; blocked означает нехватку capability или источника; failed control возвращает расследование к стенду. Стоп-линия: {item['stop']}. Нельзя добиваться зелёного результата отключением проверки, broad except, ростом лимита, повторением до случайного успеха или подменой предварительного release стабильным обещанием. После теста удаляются только созданные temp-ресурсы.

Отчёт без core dump

Для maintainer или поддержки подготовьте: минимальный C-файл, barrier sequence, build flags, три exit code и sanitizer summary без core dump и памяти приложения. Добавьте label T23-09, московский timestamp, точную версию RC и формулировку критерия «контроль завершается, поздняя ветка получает документированную ошибку или отказ без hang, а все token/guard освобождаются до deadline». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «PEP 788 вводит guard, view и thread-state APIs, чтобы native code мог безопасно прикрепиться к живому интерпретатору и не зависнуть на finalization.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.