C SNMP子代理应用程序在init_agent()处崩溃

C SNMP子代理应用程序在init_agent()处崩溃,c,linux,net-snmp,snmpd,C,Linux,Net Snmp,Snmpd,我已经在我的应用程序中使用NetSNMP库实现了SNMP子代理功能 应用程序在init_代理调用时崩溃。 GDB回溯用于相同的: #0 0x00002b123483aaa1 in init_traps () from /usr/lib64/libnetsnmpagent.so.10 #1 0x00002b1234835cd0 in init_agent () from /usr/lib64/libnetsnmpagent.so.10 ... 错误消息位于/var/log/messages:

我已经在我的应用程序中使用NetSNMP库实现了SNMP子代理功能

应用程序在init_代理调用时崩溃。 GDB回溯用于相同的:

#0  0x00002b123483aaa1 in init_traps () from /usr/lib64/libnetsnmpagent.so.10
#1  0x00002b1234835cd0 in init_agent () from /usr/lib64/libnetsnmpagent.so.10
...
错误消息位于/var/log/messages:

sample_app.exe[6642]: segfault at 0000000000659de0 rip 00002ac2749c2aa1 rsp 00007fff38c6ec48 error 7
我在CentOS 5.5elf5 64位上使用的是NET-SNMP版本:5.3.2.2。示例应用程序代码与教程中提供的相同

init_代理应该以配置文件名作为参数,我尝试传递配置文件名,该文件名具有“正确配置”/“错误配置”/“文件不存在”,在每种情况下,应用程序都会以相同的错误崩溃

请提供任何工具/链接,以帮助我确定撞车的实际原因。解决类似问题的任何链接也将有所帮助

谢谢

编辑- 这个问题已经解决了。变量“snmptrap\u oid\u len”正在应用程序的MIB C代码中声明/使用,该代码已经是网络snmp库“agent\u trap.C”的一部分。这导致了冲突,从而导致了崩溃


PS:如果您面临类似问题,请确保变量“snmptrap\u oid”和“snmptrap\u oid\u len”在MIB C代码中“未重新声明”/“正确使用”。

在您的代码中,崩溃发生在哪里?向库函数传递哪些参数?是否存在任何不应为null或未初始化的null或未初始化指针?崩溃发生在库函数中并不意味着它是您调用的函数的实际故障。崩溃发生在应用程序尝试初始化snmp库时。我传递的参数是应用程序配置文件的名称,例如app\u snmp\u subagent,它指的是文件“/etc/snmp/app\u snmp\u subagent.conf”。我不认为有任何未初始化的指针会在应用程序在没有SNMP子代理功能的情况下正确运行时重新验证。与其编辑您的问题以包含答案/解决方案,不如将其作为您自己问题的答案发布,并将其标记为已接受。