Record streaming signature OOM defect and completed temp fix
This commit is contained in:
1 parent
5792db996c
commit
5a7823e6ef
1 file changed
+19
-8
+19
-8
@@ -67,14 +67,25 @@
|
||||
Логи: /tmp/etcp-attempts-matrix.log, /tmp/etcp-attempts-asan-test_*.log,
|
||||
/tmp/etcp-oom-reinit-asan-test_*.log, /tmp/etcp-abort-encrypted-recovery.log.
|
||||
|
||||
[ ] **Media: очистка кеша удаляет временный файл активной загрузки** — подтверждено 23.10.2026:
|
||||
test_encrypted_attachment зависает в phase=3: orphan_walk_cb удаляет .uenc.tmp.<id>,
|
||||
следующий BLOCK_CHUNK получает ENOENT и завершает загрузку с ошибкой.
|
||||
chat_media_cache_cleanup_orphans защищает cipher_path и старое имя .part, но не фактический temp загрузки.
|
||||
Нужна защита файлов, которыми владеют активные media_delivery/download, через их реестр владения;
|
||||
проверять по фактическим путям, без угадывания суффикса. ETCP REINIT в воспроизведении отсутствует.
|
||||
Лог: /tmp/utun_encrypted_attachment_HwkBUM/test.log (удаление → отказ записи),
|
||||
/tmp/etcp-oom-reinit-full-check.log; профильные OOM/ETCP sanitizer-тесты проходят.
|
||||
[ ] **Crypto: повторное освобождение ключа после отказа инициализации потоковой подписи** — подтверждено 24.10.2026:
|
||||
sc_stream_sign_init и sc_stream_sign_verify_init при отказе EVP_MD_CTX_new освобождают state->pkey,
|
||||
но оставляют указатель в state; последующий sc_stream_sign_cleanup освобождает его повторно.
|
||||
Та же незавершённая очистка есть при отказе EVP_DigestInit_ex. Активное состояние перед повторным init
|
||||
также требует явного контракта: текущий memset теряет ссылки на его ресурсы.
|
||||
Привести состояния после отказов к безопасному cleanup, определить контракт повторного init в .h,
|
||||
добавить инъекции отказов выделения/инициализации и проверки cleanup/final/verify с ASAN/UBSan.
|
||||
Временное воспроизведение на штатной libutun.a: два отказа EVP_MD_CTX_new, два повторных free;
|
||||
диагностический wrapper фиксирует и подавляет второй free. Лог: /tmp/sc-sign-init-oom-repro.log,
|
||||
исходник: /tmp/sc-sign-init-oom-repro.c. Исполняемый код проекта в этой проверке не менялся.
|
||||
|
||||
[+] **Media: очистка кеша удаляла временный файл активной загрузки** — исправлено 24.10.2026:
|
||||
file_io хранит общий защищённый mutex реестр владельцев temp по фактическим нормализованным путям.
|
||||
Владение сохраняется от создания до publish/discard, включая интервал после finish; очистка кеша
|
||||
проверяет владение и удаляет сироту под тем же mutex. Угадывание суффиксов не используется.
|
||||
Регрессии проверяют открытый/закрытый temp, барьеры создания/finish и очистку после реального BLOCK_CHUNK.
|
||||
Полный check.sh: 184/184, proxy9/9, burst1/1, load8/8 PASS; пять профильных тестов ASAN/UBSan PASS,
|
||||
test_encrypted_attachment дополнительно повторён пять раз без отказов.
|
||||
Логи: /tmp/media-orphan-full-check.log, /tmp/media-orphan-asan-*.log, /tmp/media-orphan-repeat-*.log.
|
||||
|
||||
[+] **ETCP: входящий INIT сохранял устаревший признак обратной достижимости** — исправлено 23.10.2026:
|
||||
Принятый INIT обновляет RX и remote_keepalive до переиспользования буфера для ответа; flag_up=0 снимает ложный UP.
|
||||
|
||||
Reference in new issue
Block a user