[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