Hi, All Натолкнулся на неприятную ошибку при работе с семафорами.
Есть 2 демона, взаимодействующих через разд. память, доступ к блоку разд. памяти разграничивается при помощи семафоров. Код, реализующий разделение доступа к shmem, навеяный книгой Робачевского, достаточно прост и давно отлажен.
Суть проблемы: после нескольких десятков тыс. обращений к буферу, semop() возвращает ошибку ERANGE, означающую, что sem_op+semval> SEMVMX, те значение семафора превысило 32767. Утечки значений семафора не может быть однозначно, тк в таком случае оба процесса были бы просто заблокированы в ожидании его обнуления.
Что бы это значило? Не баг ли это в ядре? Ядро 2.4.17