Подробности
[В начало]
Проблема в стандарте № S0544
Краткое описание
После компиляции с помощью lsbcc на IA64 или s390x кода с вызовом timer_create() функции timer_getoverrun(), timer_delete(), timer_settime(), timer_gettime() падают
Подробное описание
В соответствии со стандартом POSIX, если вызов timer_create() успешен, то эта функция должна возвращать 0 и записывать по адресу, на который указывает ее параметр идентификатор. Его потом можно использовать в качестве аргумента для других функций.
Но в следующем коде все функции, относящиеся к таймерам, падают после успешного вызова timer_create().
#include#include int main (void) { timer_t tm; printf("timer_create() result: %d\n", timer_create(CLOCK_REALTIME, NULL, &tm)); printf("%d\n", timer_delete(tm)); // Any timer related function here return 0; }
Это падение проявляется только на архитектурах IA64 и s390x при компиляции с помощью lsbcc из LSB 3.1 SDK. При компиляции с помощью gcc все работает нормально.
Раздел стандарта
Linux Standard Base Core Specification 3.1, Chapter 13. Base Libraries, 13.5. Interface Definitions for libc, description of timer_create(), timer_getoverrun(), timer_delete(), timer_settime(), timer_gettime() functions.
Статус
Исправлено в LSB 3.2
[В начало]