$ rpm -q glibc glibc-2.8.90-alt2 В этой сборке функция futimes реализована через системный вызов utimensat (хотя glibc умеет и по-другому), который отсутствует в ядрах старее 2.6.22. Получается, что новый glibc не полностью работоспособен на старых ядрах, причём узнать это малореально.
(In reply to comment #0) > $ rpm -q glibc > glibc-2.8.90-alt2 > > В этой сборке функция futimes реализована через системный вызов utimensat (хотя glibc > умеет и по-другому), Там есть fallback на прежний метод, который работает через /proc. > который отсутствует в ядрах старее 2.6.22. > > Получается, что новый glibc не полностью работоспособен на старых ядрах, В чём это выражается? Вывод strace, ещё чего-нибудь есть?
есть. исходник приаттачен. испытание номер раз: [mibori@builder glibct]$ ./a.out fd = 4 futimes error, errno == 14 error is : Bad address [mibori@builder glibct]$ uname -r 2.6.18-ovz-smp-alt24 [mibori@builder glibct]$ rpm -q glibc glibc-2.8.90-alt2 [mibori@builder glibct]$ испытание номер два: [mibori@atlant glibct]$ ./a.out fd = 4 futimes normal [mibori@atlant glibct]$ uname -r 2.6.25-std-def-alt6.M41.1 [mibori@atlant glibct]$ rpm -q glibc glibc-2.5.1-alt7 [mibori@atlant glibct]$
Created attachment 3043 [details] исходник исходник
(In reply to comment #2) > есть. > > исходник приаттачен. > > испытание номер раз: > [mibori@builder glibct]$ ./a.out > fd = 4 > futimes error, errno == 14 > error is : Bad address > [mibori@builder glibct]$ uname -r > 2.6.18-ovz-smp-alt24 В 2.6.18-std-smp этой проблемы нет. В 2.6.18-ovz-smp есть системный вызов utimensat, портированный туда специально людьми из openvz.org (коммит 028stab051-10-g815bdcacf0138c3b677e46445dcc778d2cfcc251). К сожалению, этот бэкпорт нерабочий, лучше бы его вообще не было. Я думаю что в следующей сборке ovz-smp для 4.0, которая будет очень скоро, этот бэкпорт будет убран.
Fixed in kernel-image-ovz-smp-2.6.18-alt26.M40.2
Спасибо!