On Wed, Mar 24, 2004 at 05:17:29PM -0500, Ivan Adzhubey wrote: > На 2.4.25-std-smp-alt1 по-прежнему не работает SysV shared memory, > shmget() падает молча. Не работает ни от пользователя, ни от рута. Не > работают ни собственные программы (C), ни сторонние бинарники, ни Perl > modules. Может надо пользователя куда добавить? Но почему тогда даже от > рута не работает? Это какой-то секурити патч подсуетился? На ванильном > ядре на той же машине все работает as expected. Действительно, дело в патче Openwall, точнее, в его конфигурации. В ядрах std включена опция CONFIG_HARDEN_SHM - при этом неиспользуемые сегменты разделяемой памяти уничтожаются немедленно, не дожидаясь IPC_RMID. Программы, которые постоянно сохраняют хотя бы одно подключение к области разделяемой памяти, при этом работают нормально. Проблемы возникают в том случае, если все процессы отсоединяются от области, а потом пытаются вновь к ней подключиться; в этом случае область оказывается уничтоженной. Эта опция появилась в конфигурации довольно давно (ещё до появления kernel CVS - т.е., до 2.4.21rel-alt13). Видимо, придётся либо убирать CONFIG_HARDEN_SHM, либо добавлять какую-то возможность настройки этого поведения (/proc/sys/kernel/shm_destroy_unused ?)