Повышение исключения семафора

Мы разрабатываем набор приложений и некоторые общие библиотеки для общего функционала. В одной из библиотек мы используем семафоры Boost Interprocess для синхронизации потоков.

Проблема в том, что в одном приложении семафоры Boost Interprocess работают нормально, а в другом выдают исключение (what(): Функция не реализована; errno: ENOSYS). Основное различие между этими двумя приложениями заключается в том, что у отказавшего приложения есть графический интерфейс на основе Qt, а у другого приложения нет пользовательского интерфейса.

Оба приложения (динамически) связаны с librt.so.1 и libpthread.so.0. Это было протестировано на Fedora 14 с ядром 2.6.35.6-45.fc14.i686.

Обычные причины для ENOSYS, кажется, не применимы, потому что он работает с одним приложением, но не с другим, в то время как оба приложения работают в одной и той же системе.

Мы используем функцию boost::interprocess::interprocess_semaphore.timed_wait().


person Thales Nederland BV Huizen    schedule 12.10.2011    source источник
comment
поиск в Google +ENOSYS interprocess_semaphore timed_wait дал это как второе попадание: stackoverflow.com/questions/641126/   -  person sehe    schedule 12.10.2011
comment
Можете ли вы попытаться воспроизвести ошибку с помощью короткого автономного компилируемого примера? Я понимаю, что это может быть сложно, но иногда я решал проблему, итеративно удаляя все больше и больше приложений, пока ошибка не исчезнет. Еще одна вещь, которая может помочь вам получить хороший ответ, — это добавить больше контекста. Например, добавьте точную строку, которая вызывает исключение.   -  person Daniel Trebbien    schedule 11.01.2012