История изменений
Исправление tailgunner, (текущая версия) :
Прикинь, у нас есть fd и sg_buf. И кто-то взял в ядре fd->lock и под ним sg_buf->lock. И тут приходит сигнал.
Это понимаю...
Если мы не держим таблицу занятых ресурсов, а процесс убит
...это не понимаю. Ты должен обработать (гипотетический) код возврата EKILLED, зачистив свои ресурсы, а _после_ этого ядро зачистит свои. Проблема в том, что ты слишком легко можешь сказать «нихачу обрабатывать EKILLED и ниипет».
Если мы не держим таблицу занятых ресурсов,
Ты ее в любом случае держишь. Ну разве что ты инициируешь и завершаешь IO всегда в контексте процесса и всё хранишь на стеке.
Исходная версия tailgunner, :
Прикинь, у нас есть fd и sg_buf. И кто-то взял в ядре fd->lock и под ним sg_buf->lock. И тут приходит сигнал.
Это понимаю...
Если мы не держим таблицу занятых ресурсов, а процесс убит
...это не понимаю. Ты должен обработать (гипотетический) код возврата EKILLED, зачистив свои ресурсы, а _после_ этого ядро зачистит свои. Проблема в том, что ты слишком легко можешь сказать «нихачу обрабатывать EKILLED и ниипет».