[AGENT++] Agent++ crash when trying to send a trap

Razvan Cojocaru razvan.cojocaru at kaspersky.ro
Tue Feb 20 18:00:47 CET 2007


Hello.

My code is:

int main()
{
    int status;
    Snmp::socket_startup();  // Initialize socket subsystem
    Snmpx snmp(status, 161);

    if(status != SNMP_CLASS_SUCCESS) {
        cerr << snmp.error_msg(status) << endl;
        return 1;
    }

    RequestList rql;

    Mib mib;

    mib.add(new TestResponder);
    mib.add(new TestTable);

    mib.init();

    rql.set_snmp(&snmp);
    mib.set_request_list(&rql);

    Request* req = NULL;

    Vbx* vbs = 0;
    coldStartOid coldOid;
    NotificationOriginator no;
    UdpAddress dest("127.0.0.1/162");
    no.add_v1_trap_destination(dest);
    no.generate(vbs, 0, coldOid, "", "");

    for(;;) {
        req = rql.receive(120); // 120 seconds timeout

        if(req)
            mib.process_request(req);
    }

    Snmp::socket_cleanup();  // Shut down socket subsystem

    return 0;
}

This crashes the application in no.generate(vbs, 0, coldOid, "", "");.
GDB backtrace below:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 22886)]
0x400c89c8 in Agentpp::NotificationOriginator::generate
(this=0xbffff380, vbs=0x0, size=0, id=@0xbffff1d0, timestamp=1234890437,
enterprise=@0xbffff1f0,
    contextName=@0xbffff210) at notification_originator.cpp:163
163             List<MibTableRow>* typeList =
(gdb) l
158     {
159             // We have to be careful here about synchronisation because,
160             // we may be called after an interrupt
161             // Therefore synch everything or use synch methods like
162             // MibTable::get_rows_cloned();
163             List<MibTableRow>* typeList =
164               snmpNotifyEntry::instance->get_rows_cloned();
165             ListCursor<MibTableRow> typeCur;
166
167             List<MibTableRow>* list =
(gdb) p snmpNotifyEntry::instance
$1 = (Agentpp::snmpNotifyEntry *) 0x0

I'm using Agent++ with the _NO_SNMPv3 enabled, and multi-threading
support, and compile this code with:

$(CXX) -pthread -g -O0 -W -Wall -o test1 test1.cpp -lagent++ -lsnmp++ -ldes

My system is Slackware Linux 10.2, kernel v2.4.

Am I missing some initialization step for the traps subsystem?
Thanks.


-- 
Razvan Cojocaru
KeyID: 1024D/04CA34DE



More information about the AGENTPP mailing list