[AGENT++] RE: Sub agent, AgentX, core dump - related to shared table row removal
john.edmonds at bt.com
john.edmonds at bt.com
Tue May 20 12:38:58 CEST 2008
Hello,
I have received no reply to this, and earlier e-mails, have you had a chance to review them?
Best regards,
John Edmonds
________________________________
From: Edmonds,J,John,JGFTX C
Sent: Mon 12/05/2008 13:47
To: agentpp at agentpp.org
Subject: Sub agent, AgentX, core dump - related to shared table row removal
I am still experiencing core dumps related to shared table row removal.
I have implemented
mib->lock_mib();
table->start_synch();
mib->unlock_mib();
table->remove_row(index); (or table->allocate_index(index);)
table->end_synch();
to synchronise row removal. The core dumps are less frequent with this code in place, but still prevent us from being able to deploy the AgentX code. The stack backtrace for the core dump with the above synch code in place is as follows:
#7 thread_starter () at threads.cpp:486
#6 Agentpp::TaskManager::run () at threads.cpp:742
#5 Agentpp::MibTask::run () at threads.cpp:920
#4 Agentpp::SubAgentXMib::do_process_request () at agent_subagent.cpp:1030
#3 Agentpp::ThreadPool::execute () at threads.cpp:805
#2 Agentpp::Synchronised::wait () at threads.cpp:301
#1 pthread_cond_timedwait_relative () at queue.h:27
#0 __pthread_cond_signal () at condvar.c:267
I notice in the example, subagent.cpp, there is a suggestion that the call to remove_row() is coded such that mib->process_request() and ifTable->remove_row() can't be executing at the same time, as they would be on the same thread. Do I need to modify my implementation to mimic this?
More information about the AGENTPP
mailing list