[sisyphus] perl SysV IPC vs Owl

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Чт Июл 21 19:43:08 MSD 2005


On Thu, Jul 21, 2005 at 07:01:51PM +0400, Alexey Tourbin wrote:
> On Thu, Jul 21, 2005 at 06:08:57PM +0400, Alexey I. Froloff wrote:
> > * Alexey Tourbin <at@> [050721 17:40]:
> > > #7390   perl-base       blocker
> > > SysV shared memory support is unfunctional with CONFIG_HARDEN_SHM (Openwall patch)
> > С этой багой надо идти в апстрим...  Это проблема дизайна
> > shmread/shmwrite...
> 
> В чей апастрим?  В чём суть проблемы?  Подробнее, пожалуйста...

В патче Openwall для ядер 2.4.x добавляется возможность автоматического
уничтожения неиспользуемых сегментов SysV shared memory (сегмент считается
неиспользуемым, если он не отображается в адресное пространство хотя бы
одного процесса).  В ядрах std-* эта опция конфигурации патча Openwall
(CONFIG_HARDEN_SHM) включена.

Функции shmread и shmwrite в Perl при каждом вызове выполняют shmat(),
осуществляют доступ к данным в разделяемой памяти, после чего выполняют
shmdt().  В результате выполнения этих действий, если отсутствуют другие
процессы, использующие этот сегмент, и при этом в ядре включена опция
CONFIG_HARDEN_SHM, при выполнении shmdt() сегмент уничтожается.

Настоящая проблема здесь даже не в Perl, а в самом SysV shared memory API,
допускающем существование областей разделяемой памяти при отсутствии
ответственных за них процессов.  В большинстве случаев использования SysV
shm это свойство вызывает только проблемы (в частности, необходимость
ручного удаления сегментов после аварийного завершения использовавших их
процессов).

В случае, если автоматическое удаление сегментов разделяемой памяти
всё-таки нужно выключить, это можно сделать командой

	echo 0 >/proc/sys/kernel/shm_destroy_unused

(соответствующий патч есть в ядрах начиная с 2.4.25-std-*-alt3).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20050721/f2d80945/attachment-0003.bin>


Подробная информация о списке рассылки Sisyphus