Clarify ownership requirements for media completion callbacks
This commit is contained in:
1 parent
108dfae82b
commit
55d2f437a0
1 file changed
+4
-2
+4
-2
@@ -120,8 +120,10 @@
|
||||
[ ] **media_delivery progress_cb: отмена освобождает dl внутри обработчика DONE** — подтверждено ASAN 22.10.2026:
|
||||
progress_cb вызывает media_download_cancel, md_dl_finish освобождает dl; media_download_handle_done затем
|
||||
вызывает md_dl_send_have_block с освобождённым указателем. ASAN heap-use-after-free, чтение 8 байт.
|
||||
Уведомление должно быть последним обращением обработчика к внешнему коду; финализация имеет собственный
|
||||
отменяемый шаг, done вызывается ровно один раз после снятия timers/CM/relay/waiters и удаления из индекса.
|
||||
Обработчик явно удерживает контекст. Terminal снимает загрузку с индекса и отменяет её timers/CM/waiters;
|
||||
освобождение и done выполняются после выхода последнего удерживающего обработчика, ровно один раз.
|
||||
После progress проверяется terminal: отменённая загрузка не продолжает финализацию. Один перенос callback
|
||||
в конец функции/отложенный финализатор не заменяет владение. Relay-получатели отдельно удерживают файл блока.
|
||||
Проверить также отмену с повторным start того же media_id, отмену на последнем progress и поздние пакеты.
|
||||
Лог /tmp/media-block-audit-cancel-asan.log; стенд вне репозитория /tmp/media-block-audit.c.
|
||||
|
||||
|
||||
Reference in new issue
Block a user