OpenSCADAWiki: Errors/Known Bugs/19122005
 

Описание ошибки от 19.12.2005. Интервальный таймер неправильно работает на системах с NPTL


Сформировалось подозрение на багу в работе интервального таймера и сигналов в NPTL на ядрах >= 2.6.12.
Проблема в следующем:

Для примера написана тестовая программа которая воспроизводит эту проблему. На системах без NPTL и на системах с NPTL на ядрах 2.4 (ALTLinux2.4, ASPLinux9) результаты её работы такие:

ALTLinux2.4



На системах с NPTL и ядрами >= 2.6.12 (SuSE10_64, Mandriva2006, FedoreCore4_64) результаты её работы такие:

SuSE 10 (64)



Из протокола выполнения программы на SuSE10 видно что:

Проблему выявлено на дистрибутивай:
На всех этих дистрибутивах используется: kernel >=2.6.12, glibc 2.3.5, gcc 4.0, NPTL

Не выявлено на дистрибутивах:

Похоже на проблему в особенности реализации интервального таймера на NPTL. В связи с которой становится невозможным получить интервалы в потоках для задач такого типа. В связи с этим, для данных задач, рассматривается вариант использования возможности таймера создавать поток по истечению времени.

Исходники тестовой программы