[Click] Possible memory leak in Timer code
Roberto Riggio
roberto.riggio at create-net.org
Mon Jul 26 11:51:33 EDT 2010
Hi,
I'm using a Timer to run a callback function. The timer is created in
the following wayL
Timer *t = new Timer(static_hook, (void *) this);
t->initialize(this);
t->schedule_after_msec(delay);
where:
static void static_hook(Timer *, void *e) {
return;
}
If I run click using valgrind I get the following output:
==4833== 120 bytes in 5 blocks are definitely lost in loss record 2 of 2
==4833== at 0x402569A: operator new(unsigned int)
(vg_replace_malloc.c:255)
==4833== by 0x81DBD96: MyElement::push(int, Packet*) (myelement.cc:301)
==4833== by 0x810B329: Element::Port::push(Packet*) const
(element.hh:575)
==4833== by 0x817E2CD: FromDevice::selected(int, int) (fromdevice.cc:407)
==4833== by 0x822B73D: Master::run_selects_poll(RouterThread*, bool)
(master.cc:753)
==4833== by 0x822B9FA: Master::run_selects(RouterThread*)
(master.cc:1061)
==4833== by 0x821F95B: RouterThread::driver() (routerthread.cc:431)
==4833== by 0x81FB925: main (click.cc:598)
The line 301 of myelement.cc is the line where the timer is created.
The leak do exist in that the system memory is full after the router is
running for
a couple of hours. The method is called roughly once every 10 seconds on
a system
with 256MB of RAM (an embedded x86 wireless router).
R.
More information about the click
mailing list