При использовании nut с libusb-0.9.3-alt3.0 наблюдаются ужасные вещи. Например, дома newhidups съедает 1.9G RES, на работе даёт 99% загрузку CPU ab в курсе, обещал починить, ждём. Бага носит информационно-отслеживательный характер.
Проверено с nut 2.2.2 от Amike (git.alt:/people/amike/packages/nut.git) и libusb 0.9.4-alt1.0 все работает как надо, никаких проблем больше не наблюдается. К сожалению, для помещения nut 2.2.2 в Сизиф надо поработать над переездом конфигурационных файлов. Как минимум, /etc/nut/ups.conf потребует переименования драйвера (newhidups -> usbhid-ups), а также файлы конфигурации для других служб на самом деле лежат в /var/lib/nut/etc/nut и должны как-то корректно синхронизироваться.
(In reply to comment #1) > Проверено с nut 2.2.2 от Amike (git.alt:/people/amike/packages/nut.git) и libusb 0.9.4-alt1.0 все работает как > надо, никаких проблем больше не наблюдается. хорощо > К сожалению, для помещения nut 2.2.2 в Сизиф надо поработать над переездом > конфигурационных файлов. Как минимум, /etc/nut/ups.conf потребует переименования > драйвера (newhidups -> usbhid-ups), а также файлы конфигурации для других служб на > самом деле лежат в /var/lib/nut/etc/nut и должны как-то корректно синхронизироваться. > сейчас занят этим. Спасибо что посмотрели сборку.
Более плотное вычитывание кода драйверов USB-устройств в NUT 2.2.2 привело исправлению некоторого количества утечек файловых дескрипторов в libusb (0.9.4-alt2.0). Код hidups-usb в nut написан просто отвратительно с точки зрения работы со сторонними ресурсами. Типичный подход: создать ресурс USB (usb_open()), при обнаружении каких-либо ошибок работы с ним просто обнулить внутренний указатель на устройство и вызвать пересоединение к устройству. В результате старый указатель на ресурс USB "подвисает" неиспользуемым, выполняется повторное сканирование шины, распределяются новые ресурсы, теряются файловые дескрипторы и течет память. Я поправил немного код hidups-usb так, что память не течет и файловые дескрипторы не теряются, однако по-прежнему вся эта система не работает, если вдруг что-то происходит с usb-устройством (например, система автоматически включила режим сохранения энергии). Повторное присоединение к устройству не проходит, буду смотреть дальше. Со старым кодом в newhidups все еще хуже... В 2.2.2 он уже совсем не используется (код драйвера присутствует, но содержит вызовы функций, которые уже отсутствуют в инфраструктуре NUT 2.2.2). Написан он в том же стиле и просто игнорирует управление ресурсами в USB. Примитивный патч, который исправляет элементарные ошибки и позволяет работать hidups-usb до "сбоя" устройства, прилагается.
Created attachment 3085 [details] Первая версия исправления hidups-usb
Пакет nut ищет мейнтейнера.
Какие-то наработки по исправлению помимо уже представленного есть у кого-нибудь?
Пакет сборки amike@ залил в сизиф всё-таки я.
УМВР на 2.6.3-alt1 (Powerware 9120 по USB).