Closed ghost closed 9 years ago
I do not see how the leak is possible at the moment. The only case when this leak occurs is when I'm terminating the collector with second signal - in case it won't die the first time. Can you provide more information about when this happens?
Same for me. I spent quite some time trying to debug this problem, but without any luck so far. I'm certainly not running terminating the collector with a second signal. Some observations:
tcpreplay
<collectingProcess>
<name>UDP collector</name>
<udpCollector>
<name>Listening port 3055</name>
<localPort>3055</localPort>
<templateLifeTime>1800</templateLifeTime>
<optionsTemplateLifeTime>1800</optionsTemplateLifeTime>
<!--## Local address to listen on. If empty, bind to all interfaces -->
<localIPAddress></localIPAddress>
</udpCollector>
<exportingProcess>Integrated export</exportingProcess>
<statisticsFile>ipfixcol_stat.log</statisticsFile>
</collectingProcess>
configurator.c
:/* Input is pointer to configurator structure, don't free it */
// free(plugin->input);
By the way, as a precaution, I added some extra checks to udp_input.c
as part of #72.
I've tried with ipfix storage plugin and data is send by ipfixsend tool. There are no leaks at all. Maybe the valgrind does not handle dynamically loading plugins correctly?
Just checking: which version of Valgrind are you using? I'm using valgrind-3.10.0.SVN
.
I'm using valgrind-3.8.1 which comes with OpenSuse 12.3. Can you try the same test on other versions?
Since valgrind-3.8.1
is rather old, I tested it again on Valgrind's latest-and-greatest release, valgrind-3.10.1.SVN
, and the leak is still reported.
I've just tested it with valgrind-3.11.0.SVN and still I'm not able to reproduce the issue. I'm gonna close it until we can reproduce it more reliably.
From time to time, I get the following report from Valgrind:
There's no clear way to reproduce this issue (it just happens from time to time), although I cannot pinpoint the source of the problem, yet. What I can say though is that the issue is not solved by checking whether the variables in
udp_input.c:181,183,185,187
are already set before (over)writing the pointer.