[devel] Re: I: Sisyphus-20050929 unmets: +2 (93/40)
Vladimir Lettiev
=?iso-8859-1?q?crux_=CE=C1_gorodmasterov=2Ecom?=
Пн Окт 3 23:03:28 MSD 2005
Dmitry V. Levin пишет:
> On Sun, Oct 02, 2005 at 02:19:07PM +0400, Vladimir Lettiev wrote:
>>Я сделал патч для IPC::ShareLite.
>>Как мне показалось проблема в том, что данный модуль сначала делает
>>shmdt() и лишь после пытается метить сегмент флагом IPC_RMID. Попробовал
>>поменять порядок и вроде как заработало.
>>Если кто-то может его прокомментировать, welcome.
Как оказалось проблема была в том, что происходила попытка подключения к
сегменту, который был удалён.
> Патч без контекста не очевиден, но то, что вы предлагаете сделать, логично
> и, насколько я понимаю, должно работать на всех ядрах.
Сложность в том, что IPC::ShareLite позволяет создавать сегмент, который
может как удаляться, после отработки программы, так и нет (зачем это
надо, не знаю). Видимо придётся фиксить также все программы, которые
захотят использовать последнюю возможность этого модуля.
Патч я переделал. Теперь модуль проходит как собственные тесты, так и
тесты других приложений, которые его используют (например,
perl-Cache-Cache). Возможно ошибки всё же всплывут, но по крайне мере
удалось исключить зависание, за счёт использования вместо semop() вызова
semtimedop(), который позволяет задать время таймаута.
Смысл патча^Wхака в том, чтобы не детачится от сегмента, если число
подключений меньше двух. И проверять перед унижтожением сегмента, что он
уже не был уничтожен раньше, чтобы не нервировать shmat().
p.s. Исправленый пакет с этим патчем я уже залил в incoming.
--
С уважением, Владимир Леттиев aka crux <crux на gorodmasterov.com>
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : perl-IPC-ShareLite-fixOwl.patch
Тип : text/x-patch
Размер : 2304 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20051003/4bd1b922/attachment-0001.bin>
Подробная информация о списке рассылки Devel