net-snmp-5.1.1, пересобран для Master2.2, но скорее всего эта ошибка будет проявляться и в текущем Сизифе. Возникает она при запросе к snmpd, запущеном под юзером snmp, а именно этот режим, как я понял, является штатным. Если демона запусить от root'a - то все нормально. Проблема кроется в файле net-snmp-5.1.1/agent/mibgroup/host/hr_system.c строки с 604: if (kill(utmp_p->ut_pid, 0) == -1 && errno == ESRCH) { utmp_p->ut_type = DEAD_PROCESS; pututline(utmp_p); continue; т.е. при срабатывании этого условия демон пытается сам "выправить" utpm и вызывает pututline(utmp_p). Без рутовских привелегий это приводит к зацикливанию и 100% загрузке процессора. Steps to Reproduce: 1.Необходимо наличие записей в /var/run/utpm, которые бы вызвали срабатывание вышеприведенного if'a 2.snmpwalk -c host_oleg localhost hrSystemNumUsers 3.получаем зависание snmpd Actual Results: для устранения зависания достаточно убрать вызов pututline(utmp_p); cat net-snmp-5.1-alt-utmp.patch --- net-snmp-5.1.1/agent/mibgroup/host/hr_system.c.go 2004-02-23 02:29:34 +0900 +++ net-snmp-5.1.1/agent/mibgroup/host/hr_system.c 2004-06-14 14:18:17 +1000 @@ -602,8 +602,8 @@ utmp/utmpx file that would otherwise be counted as a current user */ if (kill(utmp_p->ut_pid, 0) == -1 && errno == ESRCH) { - utmp_p->ut_type = DEAD_PROCESS; - pututline(utmp_p); +/* utmp_p->ut_type = DEAD_PROCESS; */ +/* pututline(utmp_p); */ continue; } #endif
На 5.3.1 из сизифа воспроизводится?
в 5.3.1-alt1 вроде бы нет: thresh@somehost:/home/thresh % snmpwalk -v 1 -c community 172.16.127.255 hrSystemNumUsers HOST-RESOURCES-MIB::hrSystemNumUsers.0 = Gauge32: 4 при этом: thresh@172.16.127.255 $ who | wc -l 4 Resolved/Fixed