Ошибка сегментирования при SNMP-запросе

Started by Mikhail V. Platonov, May 30, 2011, 02:24:42 AM

Previous topic - Next topic

Mikhail V. Platonov

Здравствуйте.

Поступил к нам в коллекцию свитч D-Link DGS-3612. Добавил его в NetXMS, запросил конфигурацию и — netxmsd упал. Запустил с ключом -D 9, ниже последние строки перед вылетом:

[30-May-2011 03:11:01] [CLSN-0] Received message CMD_POLL_NODE
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] Starting configuration poll for node srv-room-sw10-DGS-3612 (ID: 983)
[30-May-2011 03:11:01] ConfPoll(srv-room-sw10-DGS-3612): checking for NetXMS agent Flags={02000000} DynamicFlags={00000400}
[30-May-2011 03:11:01] ConfPoll(srv-room-sw10-DGS-3612): calling SnmpCheckCommSettings()
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] Successful sync query: "SELECT user_name,auth_method,priv_method,auth_password,priv_password FROM usm_credentials" [0 ms]
[30-May-2011 03:11:01] SnmpCheckV3CommSettings: failed
[30-May-2011 03:11:01] Successful sync query: "SELECT var_value FROM config WHERE var_name='DefaultCommunityString'" [0 ms]
[30-May-2011 03:11:01] SnmpCheckCommSettings: trying version 1 community 'public'
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] ConfPoll(srv-room-sw10-DGS-3612): checking for CheckPoint SNMP on port 260
[30-May-2011 03:11:01] EVENT 13 (F:0x0000 S:0) FROM srv-room-sw10-DGS-3612: Node capabilities changed (Old: 0x02000000; New: 0x0200184D)
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] [CLSN-0] Sending message CMD_POLLING_INFO
[30-May-2011 03:11:01] Successful sync query: "SELECT var_value FROM config WHERE var_name='UseIfXTable'" [0 ms]
[30-May-2011 03:11:01] Successful sync query: "SELECT var_value FROM config WHERE var_name='UseInterfaceAliases'" [0 ms]
Ошибка сегментирования


Сейчас он стоит с галкой в конфигурации "Не опрашивать по SNMP", иначе NetXMS падает. Ужасно хотелось бы разобраться, что такого там происходит.

Версия NetXMS — 1.0.11

Mikhail V. Platonov

Ещё на всякий случай уточнение. Проблема проявилась на версии 0.2.31. На удачу решил обновиться, но не помогло.

Victor Kirhenshtein

А что выдают следующие запросы:

nxsnmpget -c community device_ip .1.3.6.1.2.1.2.1.0
nxsnmpwalk -c community device_ip .1.3.6.1.2.1.2.2.1.1
nxsnmpwalk -c community device_ip .1.3.6.1.2.1.31.1.1.1.18
nxsnmpwalk -c community device_ip .1.3.6.1.2.1.31.1.1.1.1
nxsnmpwalk -c community device_ip .1.3.6.1.2.1.2.2.1.2

?

Mikhail V. Platonov

nxsnmpwalk -c public 192.168.10.44 .1.3.6.1.2.1.2.1.0
-- Ничего не выдал --

nxsnmpwalk -c public 192.168.10.44 .1.3.6.1.2.1.2.2.1.1
.1.3.6.1.2.1.2.2.1.1.1 [INTEGER]: 1
.1.3.6.1.2.1.2.2.1.1.2 [INTEGER]: 2
.1.3.6.1.2.1.2.2.1.1.3 [INTEGER]: 3
.1.3.6.1.2.1.2.2.1.1.4 [INTEGER]: 4
.1.3.6.1.2.1.2.2.1.1.5 [INTEGER]: 5
.1.3.6.1.2.1.2.2.1.1.6 [INTEGER]: 6
.1.3.6.1.2.1.2.2.1.1.7 [INTEGER]: 7
.1.3.6.1.2.1.2.2.1.1.8 [INTEGER]: 8
.1.3.6.1.2.1.2.2.1.1.9 [INTEGER]: 9
.1.3.6.1.2.1.2.2.1.1.10 [INTEGER]: 10
.1.3.6.1.2.1.2.2.1.1.11 [INTEGER]: 11
.1.3.6.1.2.1.2.2.1.1.12 [INTEGER]: 12
.1.3.6.1.2.1.2.2.1.1.1024 [INTEGER]: 1024
.1.3.6.1.2.1.2.2.1.1.5121 [INTEGER]: 5121

nxsnmpwalk -c public 192.168.10.44 .1.3.6.1.2.1.31.1.1.1.18
.1.3.6.1.2.1.31.1.1.1.18.1 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.2 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.3 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.4 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.5 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.6 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.7 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.8 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.9 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.10 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.11 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.12 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.1024 [STRING]:
.1.3.6.1.2.1.31.1.1.1.18.5121 [STRING]:

nxsnmpwalk -c public 192.168.10.44 .1.3.6.1.2.1.31.1.1.1.1
.1.3.6.1.2.1.31.1.1.1.1.1 [STRING]: 1/1
.1.3.6.1.2.1.31.1.1.1.1.2 [STRING]: 1/2
.1.3.6.1.2.1.31.1.1.1.1.3 [STRING]: 1/3
.1.3.6.1.2.1.31.1.1.1.1.4 [STRING]: 1/4
.1.3.6.1.2.1.31.1.1.1.1.5 [STRING]: 1/5
.1.3.6.1.2.1.31.1.1.1.1.6 [STRING]: 1/6
.1.3.6.1.2.1.31.1.1.1.1.7 [STRING]: 1/7
.1.3.6.1.2.1.31.1.1.1.1.8 [STRING]: 1/8
.1.3.6.1.2.1.31.1.1.1.1.9 [STRING]: 1/9
.1.3.6.1.2.1.31.1.1.1.1.10 [STRING]: 1/10
.1.3.6.1.2.1.31.1.1.1.1.11 [STRING]: 1/11
.1.3.6.1.2.1.31.1.1.1.1.12 [STRING]: 1/12
.1.3.6.1.2.1.31.1.1.1.1.1024 [STRING]: 802.1Q Encapsulation Tag 0001
.1.3.6.1.2.1.31.1.1.1.1.5121 [STRING]: System

nxsnmpwalk -c public 192.168.10.44 .1.3.6.1.2.1.2.2.1.2
.1.3.6.1.2.1.2.2.1.2.1 [STRING]: RMON Port  1 on Unit 1
.1.3.6.1.2.1.2.2.1.2.2 [STRING]: RMON Port  2 on Unit 1
.1.3.6.1.2.1.2.2.1.2.3 [STRING]: RMON Port  3 on Unit 1
.1.3.6.1.2.1.2.2.1.2.4 [STRING]: RMON Port  4 on Unit 1
.1.3.6.1.2.1.2.2.1.2.5 [STRING]: RMON Port  5 on Unit 1
.1.3.6.1.2.1.2.2.1.2.6 [STRING]: RMON Port  6 on Unit 1
.1.3.6.1.2.1.2.2.1.2.7 [STRING]: RMON Port  7 on Unit 1
.1.3.6.1.2.1.2.2.1.2.8 [STRING]: RMON Port  8 on Unit 1
.1.3.6.1.2.1.2.2.1.2.9 [STRING]: RMON Port  9 on Unit 1
.1.3.6.1.2.1.2.2.1.2.10 [STRING]: RMON Port 10 on Unit 1
.1.3.6.1.2.1.2.2.1.2.11 [STRING]: RMON Port 11 on Unit 1
.1.3.6.1.2.1.2.2.1.2.12 [STRING]: RMON Port 12 on Unit 1
.1.3.6.1.2.1.2.2.1.2.1024 [STRING]: 802.1Q Encapsulation Tag 0001
.1.3.6.1.2.1.2.2.1.2.5121 [STRING]: rif0(192.168.10.44)

Victor Kirhenshtein

Pervaja komanda dolzna bila bit' nxsnmpget, a ne nxsnmpwalk.

Victor Kirhenshtein

Esche vopros - esli mozno, zapustite netxmsd pod gdb:

gdb netxmsd

poluchite prompt gdb>

tam komanda

run

posle crasha budet obpjat' prompt gdb>

napishite komandu

bt

i prishlite rezul'tat.

Mikhail V. Platonov

Quote from: Victor Kirhenshtein on May 30, 2011, 07:25:46 PM
Pervaja komanda dolzna bila bit' nxsnmpget, a ne nxsnmpwalk.

Прошу прощения, вот результат nxsnmpget:

nxsnmpget -c public 192.168.10.44 .1.3.6.1.2.1.2.1.0
.1.3.6.1.2.1.2.1.0 [INTEGER]: -742


Quote from: Victor Kirhenshtein on May 30, 2011, 11:51:18 PM
Esche vopros - esli mozno, zapustite netxmsd pod gdb:

gdb netxmsd

poluchite prompt gdb>

tam komanda

run

posle crasha budet obpjat' prompt gdb>

napishite komandu

bt

i prishlite rezul'tat.


Вот результат выполнения:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xaa053b90 (LWP 1317)]
0xb7304867 in memset () from /lib/i686/cmov/libc.so.6
(gdb) bt
#0  0xb7304867 in memset () from /lib/i686/cmov/libc.so.6
#1  0xb76303a7 in SnmpGetInterfaceList (dwVersion=1, pTransport=0x8587cf8, node=0x82ca968, useIfXTable=1) at snmp.cpp:409
#2  0xb75fb046 in Node::getInterfaceList (this=0x82ca968) at node.cpp:493
#3  0xb75ff970 in Node::updateInterfaceConfiguration (this=0x82ca968, dwRqId=17, dwNetMask=0) at node.cpp:1732
#4  0xb7600922 in Node::configurationPoll (this=0x82ca968, pSession=0x864c320, dwRqId=17, nPoller=-1, dwNetMask=0) at node.cpp:1647
#5  0xb7620c30 in ClientSession::pollerThread (this=0x864c320, pNode=0x82ca968, iPollType=2, dwRqId=17) at session.cpp:4444
#6  0xb7620c79 in ClientSession::PollerThreadStarter (pArg=0xb692cac0) at session.cpp:220
#7  0xb75104c0 in start_thread () from /lib/i686/cmov/libpthread.so.0
#8  0xb736d84e in clone () from /lib/i686/cmov/libc.so.6

Victor Kirhenshtein

Poprobujte zamenit' src/server/core/snmp.cpp na prilozennij i peresobrat' server.

OID .1.3.6.1.2.1.2.1.0 - eto kolichestvo interfejsov, a DLink vozvraschaet otricatel'noe chislo! Server ne bil rasschitan na takoe :) Dobavil proverku na takoj sluchaj, teoreticheski dolzno bit' vse horosho.

Mikhail V. Platonov

Quote from: Victor Kirhenshtein on May 31, 2011, 09:22:34 AM
Poprobujte zamenit' src/server/core/snmp.cpp na prilozennij i peresobrat' server.

OID .1.3.6.1.2.1.2.1.0 - eto kolichestvo interfejsov, a DLink vozvraschaet otricatel'noe chislo! Server ne bil rasschitan na takoe :) Dobavil proverku na takoj sluchaj, teoreticheski dolzno bit' vse horosho.


С ума сойти. Неудивительно, что сервер растерялся.
Большое спасибо, Виктор, сегодня вечером попробую пересобрать сервер.

Mikhail V. Platonov

Ещё раз спасибо большое, Виктор, патч помог.