LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

Прикинь, у нас есть fd и sg_buf. И кто-то взял в ядре fd->lock и под ним sg_buf->lock. И тут приходит сигнал.

Это понимаю...

Если мы не держим таблицу занятых ресурсов, а процесс убит

...это не понимаю. Ты должен обработать (гипотетический) код возврата EKILLED, зачистив свои ресурсы, а _после_ этого ядро зачистит свои. Проблема в том, что ты слишком легко можешь сказать «нихачу обрабатывать EKILLED и ниипет».

Если мы не держим таблицу занятых ресурсов,

Ты ее в любом случае держишь. Ну разве что ты инициируешь и завершаешь IO всегда в контексте процесса и всё хранишь на стеке.

Исходная версия tailgunner, :

Прикинь, у нас есть fd и sg_buf. И кто-то взял в ядре fd->lock и под ним sg_buf->lock. И тут приходит сигнал.

Это понимаю...

Если мы не держим таблицу занятых ресурсов, а процесс убит

...это не понимаю. Ты должен обработать (гипотетический) код возврата EKILLED, зачистив свои ресурсы, а _после_ этого ядро зачистит свои. Проблема в том, что ты слишком легко можешь сказать «нихачу обрабатывать EKILLED и ниипет».