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

Python 3.14.7: как изолированно проверить мутацию буфера во время sendmsg

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

Python 3.14.7: как изолированно проверить мутацию буфера во время sendmsg. Практическая инструкция отделяет симптом от соседних причин: синтетический fixture, отрицательный control, таблица наблюдений, критерий остановки и минимальный пакет для поддержки без production-данных.

Развилка до обновления

Короткая развилка: изменение действительно вошло в Python 3.14.7 — Исправлены crashes в socket.sendmsg() и socket.recvmsg_into(), возникавшие при конкурентной мутации buffer sequences. Но похожий внешний симптом может иметь другую причину. Здесь проверяется только боль «Один поток меняет sequence буферов, пока другой входит в sendmsg() или recvmsg_into(), и вместо контролируемой ошибки процесс мог аварийно завершиться.» и только запрос «как проверить защиту sendmsg и recvmsg_into от конкурентной мутации buffer sequence в Python 3.14.7». Не переносите вывод на производительность, безопасность всего приложения или совместимость всех зависимостей: для этого нужны отдельные тесты и отдельные источники.

Сбор измеримых фактов

Практическая проверка T22-04 строится вокруг одного действия: в отдельном процессе использовать socketpair, barrier и небольшой список bytearray, чтобы одновременно начать системный вызов и одну заранее ограниченную мутацию sequence. Подготовьте новый fixture для каждого повтора и пометьте события монотонным временем. Сначала соберите факт о build/runtime capability, затем — результат API. Не подменяйте недоступную среду похожей ОС или другим устройством: это уже новый вопрос, а не подтверждение текущего.

Матрица A/B/A2

Матрица решения включает три ветки. Первая — сначала прогнать неизменяемый tuple из bytes, затем ту же нагрузку без конкурентного потока и только после этого bounded race-case. Вторая — target с тем же input, третья — повтор первой в новом процессе. Поля: «режим | число итераций | exit code child | класс исключения | отправленные байты | watchdog timeout | crash marker». Сначала сравните capability и вход, потом exception/exit, и лишь затем делайте вывод. Это защищает от ложного зелёного статуса из-за cache, warmed state или случайного timing.

Когда вывод относится к issue

Ветка считается подтверждённой только когда оба control завершаются предсказуемо, race-case не валит интерпретатор, а данные или исключение укладываются в заранее объявленный контракт. Если версия ведёт себя иначе, сохраните наблюдение без попытки объяснить его догадкой. Причиной могут быть backport, vendor patch, build option или тестовая ошибка. Отдельно пометьте, какой control отвергнут; это полезнее общего вывода «не работает».

Наблюдаемый rollback

Красный сигнал: не запускать бесконечный стресс и не использовать внешний сокет; watchdog немедленно завершает child при hang, core dump или росте памяти. Также завершайте child по watchdog, если он не достиг следующего marker. Возврат должен быть наблюдаемым: temp root пуст, сетевой stub закрыт, terminal/GUI state восстановлен, системный Python и environment не менялись. Такой rollback важнее попытки получить красивый passed.

Что передать сопровождающим

Если нужна помощь сопровождающих, подготовьте: тип socketpair, размеры буферов, barrier-порядок, лимит итераций, exit code, класс исключения и сокращённый crash report без core. Добавьте итоговый статус passed / not reproduced / blocked / failed control и одну строку об очистке. Не выдавайте форумный лид за факт: change boundary подтверждается release, changelog и первичной issue, а не количеством комментариев.

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

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

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

Ответы

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

Ваш ответ

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

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

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