100% cpu usage

M. Warner Losh imp____village.org
Fri Feb 22 00:25:13 CET 2002


In message: <3C757FEC.67508B98 at fock.de>
            Frank.Fock at t-online.de (Frank Fock) writes:
: Are you sure that you have not changed anything to SNMP++ or AGENT++?

Yes.  I only changed them enough to get them to compile, which I sent
diffs to earlier.  There is an additional local hack where we up
MAX_PDUS from 50 to 250.  I can provide a complete list of diffs if
you'd like to see them from the stock versions.

: AGENT++ has been used for several years now from several hundred users
: on Linux, WinNT/2000/XP, Solaris, HPUX, Tru64 (Digital Unix), FreeBSD,
: AIX, and other systems and no one has reported this problem yet.

I did the original FreeBSD port and saw it then.  At least I sent you
a bunch of FreeBSD fixes once upon a time.  I thought I'd reported it
at the time, but I might not have done so.  Looking at the code, it
makes sense why things are that way.

: It is not that I am not taking this serious, but I would like to
: identify the source of the problem.

It is also possible that my use of agent++ is exposing this bug where
other uses wouldn't see it.  I can post the code that I'm using to do
things if that would be helpful.  It isn't that proprietary of
software (we just use it for a big network database, and i can easily
chop out the stuff that we can't distribute).  The meat of what we're
doing is:

void 
TSCSystemManager::process_mib_requests()
{
    Request	 *req;  
    TscSystemCfg *systemCfgMib;
    
    init_signals();
    init();

#ifdef _SNMPv3
    initVACM();
#endif

    // Reqister request list for outgoing requests.
    mib()->set_request_list( reqList() );  

    // Register SNMP object with request list.
    reqList()->set_snmp( snmpx() );

    // Instantiate Timing MIB instance.
    systemCfgMib = new TscSystemCfg();
 
    // Add Timing MIB to mib space.
    mib()->add( systemCfgMib );	// add local mib to monitored mib space

    for (;;) {
	// block on requests for 120 seconds.
	req = reqList()->receive( 120 );
	
	// Process requests
	if (req) {
	    mib()->process_request( req );
	} else {
	    mib()->cleanup();
	}
    }    
}

Warner



More information about the AGENTPP mailing list