Приветствую,
достался в «наследство» сравнительно большое embedded проект (ARM процесор, linux 2.6.31, busybox), который нужно поддерживать. Столкнулся со следующей проблемой: ядерный модуль (часть этого проекта) всегда загружается первым, потом демон устанавливающий соединение по netlink сокету. Проблема в том, что после выгружения демона из памяти по SIGINT или SIGKILL, число референсов на этот модуль в ядре не 0 (cat /proc/net/modules | grep my_module, 3й параметр) и соответственно rmmod возвращает ошибку:
% rmmod my_module.ko
% rmmod: my_module.ko: Resource temporarily unavailable
Т.е. получаем -11 EAGAIN. Из кода демона известно, что открываются 3 netlink сокета в модуль и по таймеру один из сокетов регулярно читается, но после запуска демона число references в модуле (/proc/net/modules) поднимается с 0 до 6, после убийства демона опускается до 3, т.е. либо остаются открытые дескрипторы, либо что-то еще.
Подскажите, какие есть методы обнаружить и отловить такого рода баг?
Буду пременого благодарен! :)