Есть сервер и несколько клиентов. Сервер создает блок разделяемой памяти (примерно на 16Мб размером) и пишет туда какие то данные. Клиенты запускаются, подключают этот блок для чтения и читают их оттуда, после чего завершают работу. Клиенты, прошу заметить, на PHP, используют extension на C, который собственно и занимается подключением и чтением этого блока разделяемой памяти. Все вроде бы работает хорошо и прекрасно, однако периодически (примерно в 5-10% случаев) при исполнении клиента, происходит совершенно странная дикость (или дикая странность, как угодно). Блок памяти подключается на ура (ошибок не возвращает, адрес сегмента, отображенного в память процесса, похож на правду). Однако в нем одни нули. Т.е. никаких данных нет, одни нули. Только в конце блока есть немного мусора (начиная со смещения F0F008). Для того чтобы от сего неприятного явления избавиться, достаточно запустить клиент заново, и как правило он подключает и читает блок нормально. Я честно говоря в ступоре, никаких идей даже нет.
Если у кого нибудь есть идеи, с чем сие связано и как лечить, буду очень рад )