Дистрибутив: ALTLinux 3.0 GLibC: glibc-2.3.5-alt5 Описание проблемы: Проблема замечена при создании таймера функцией timer_create(), с методом уведомления SIGEV_THREAD. Таймер создаётся периодическим, вызывающим создание нового потока. На первый взгляд таймер работает нормально, т.е. потоки создаются выполняются и завершаются. Но, если вызванный таймером поток выполняется продолжительное время, то становится видимым блокирование таймера. Причем, блокируется не только таймер вызвавший продолжительное время выполняющийся поток, но и все таймеры созданные функцией timer_create()! Эта проблема практически сводит на нет возможность использования POSIX таймеров, а учитывая и неоднозначность в работе интервального таймера setitimer() на различных моделях потоков, то и таймеров вообще! На дистрибутиве SuSE Linux 10.1 с NPTL 2.4 в GlibC POSIX таймера работают нормально и не приводят к взаимному блокированию.
Created attachment 1697 [details] Программка тестирования на блокировку прерываний Написал программку для наглядной демонстрации и выявления данной проблемы. При запуске её на ALTLinux3.0 и SuSe 10.1 четко видно блокирование быстрого таймера в ALTLinux3.0 на момент исполнения потока медленного таймера. //========== ALTLinux3.0 ============== Fast task call. Fast task call. Fast task call. Fast task call. Begin the slow and the long execution task call. End the slow and the long execution task call. Fast task call. Fast task call. Fast task call. Fast task call. Fast task call. Fast task call. Begin the slow and the long execution task call. End the slow and the long execution task call. Fast task call. Fast task call. Fast task call. //======================================= //============= SuSE 10.1 =============== Fast task call. Fast task call. Fast task call. Begin the slow and the long execution task call. Fast task call. Fast task call. Fast task call. Fast task call. Fast task call. End the slow and the long execution task call. Fast task call. Fast task call. Fast task call. Fast task call. Fast task call. Begin the slow and the long execution task call. Fast task call. Fast task call. Fast task call. Fast task call. Fast task call. End the slow and the long execution task call. Fast task call. Fast task call. Fast task call. //=======================================
Эта проблема, кстате, актуальна и для ALTLinux 2.4.
Проблема не актуальна для glibc-2.5-alt4 из Сизифа.
Закрываю как не актуальный для 4.0