Bug 36591

Summary: chrony не синхронизирует время если в системе присутствует пакет libnss-mdns-0.10-alt4.mipsel
Product: Sisyphus Reporter: jqt4
Component: chronyAssignee: Ivan A. Melnikov <iv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: antohami, mike, rider
Version: unstable   
Hardware: mipsel   
OS: Linux   
Attachments:
Description Flags
трейсы none

Description jqt4 2019-04-12 19:25:23 MSK
Created attachment 8099 [details]
трейсы

При тестировании регулярок было обнаружено, что в регулярках с lxde и lsqt время синхронизируется, а в регулярках с mate и xfce нет.
Дополнительный симптом проблемы - При завершении работы systemd останавливал NTP примерно 1.5 мин.
В регулярках стоит один NTP клиент - chrony-3.4-alt1
При исследовании с помощью strace обнаружено, что при наличии проблемы используется библиотека /lib/libnss_mdns4_minimal.so.2, а при отсутствии - /lib/libnss_dns-2.27.so
После удаления из системы пакета libnss-mdns проблема пропала.

В файлах strace-out-chronyd.3259,  strace-out-chronyd.3260 трейс при отсутствии проблемы.
В файлах strace-out-chronyd.3576  strace-out-chronyd.3577 трейс при наличии проблемы.
Comment 1 Антон Мидюков 2019-04-12 20:34:32 MSK
Вытягивается пакет libnss-mdns через список domain client цели /use/domain/client.

На i586 и x86_64 такого не наблюдаю, хотя библиотека есть. А вот на armh и aarch64 иногда наблюдается долгое выключение mate и xfce. Полторы минуты завершается сессия по сообщению на экране. Проблемы с синхронизацией времени при этом нет. Так что может и другая проблема.
Comment 2 jqt4 2019-04-18 14:45:41 MSK
Уточнение: данный баг описывает проявление проблемы на BFK3.1.
Дальнейшее тестирование показало, что после удаления libnss-mdns проблема не проявляется (как указано в описании) только при ручном запуске chronyd.
После перезагрузки проблема проявляется снова, для ее обхода нужно перезапустить chronyd командой systemctl restart chronyd.
Comment 3 Антон Мидюков 2019-04-18 14:52:07 MSK
(В ответ на комментарий №2)
> Уточнение: данный баг описывает проявление проблемы на BFK3.1.
> Дальнейшее тестирование показало, что после удаления libnss-mdns проблема не
> проявляется (как указано в описании) только при ручном запуске chronyd.
> После перезагрузки проблема проявляется снова, для ее обхода нужно
> перезапустить chronyd командой systemctl restart chronyd.

А на Таволге нормально? На BFK3 несколько сетевых, может дело в этом? Что если воткнуть сеть в первую сетевую?
Comment 4 Anton Farygin 2019-04-18 14:52:47 MSK
это только на мипсе ?
Comment 5 Антон Мидюков 2019-04-18 14:56:59 MSK
(В ответ на комментарий №4)
> это только на мипсе ?

Пока да.
Comment 6 Антон Мидюков 2019-04-18 15:34:53 MSK
(В ответ на комментарий №2)
> перезапустить chronyd командой systemctl restart chronyd.

Кстати, не помогает ли отключение/подключение сетевого соединения в NetworkManager?
Comment 7 jqt4 2019-04-18 16:26:29 MSK
(В ответ на комментарий №3)
> А на Таволге нормально?...
На Таволге подобная проблема тоже есть, но проявляется по-другому: если на BFK3 chronyd зависает, то на Таволге аварийно завершается с сообщением:
Fatal error : adjtimex(0x4002) failed : Invalid argument
Диагностика верная - поля структуры timex неправильно заполняются перед системным вызовом adjtimex. Почему - непонятно.
Comment 8 jqt4 2019-04-18 17:16:19 MSK
(В ответ на комментарий №3)
> ... На BFK3 несколько сетевых, может дело в этом? Что если
> воткнуть сеть в первую сетевую?
До этого тестировал на eth1. Протестировал снова на eth2.
Все проявления проблемы те же. Проблема не зависит от того, в какой порт включена сеть.
Comment 9 jqt4 2019-04-18 17:34:22 MSK
(В ответ на комментарий №6)
> Кстати, не помогает ли отключение/подключение сетевого соединения в
> NetworkManager?
Попробовал отключить и подключить соединение в NetworkManager и просто вынуть и вставить сетевой кабель. Не помогает - chronyd как висел так и висит.
Comment 10 Антон Мидюков 2019-04-18 17:37:55 MSK
Итого: что-то mipsel специфичное. Я сегодня ещё раз проверял на i586, x86_64, armh, aarch64, ничего подобного не наблюдается.
Comment 11 jqt4 2019-04-23 18:14:24 MSK
Выяснено, что на BFK3.1 chronyd повисает на системном вызове
prctl(PR_SET_FP_MODE, 0)
Сама необходимость этого вызова обусловлена тем, что библиотека libnss_mdns4_minimal.so.2, (и libnss_fallback.so.2 используемая после удаления libnss-mdns) собраны с иным FP ABI, нежели chronyd:
FP ABI: Аппаратная плавающая запятая (32-битный ЦП, любой FPU) у chronyd
FP ABI: Аппаратная плавающая запятая (двойная точность) у библиотек.
После пересборки библиотек их FP ABI стало как у chronyd и проблема пропала.

Проблема на Таволге исправлена патчем ядра:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29183a70b0b828500816bd794b3fe192fce89f73
Comment 12 Ivan A. Melnikov 2019-12-04 14:09:28 MSK
Проблема с  libnss-mdns была решена пересборкой (стало правильное ABI).

Проблема с prctl(PR_SET_FP_MODE, 0) была решена в kernel-image-bfk3-def 2:4.4.100-alt8