<div dir="ltr"><div><div>Hi<br><br>When valgrinding a plugin, i usually go with the full application. There is some valgrind suppression files in paraview/CMake/ParaViewValgrindSuppressions.sup<br></div>It can be a bit slow, but in two/three minutes you should be able to run ParaView, load and test your plugin.<br><br></div><div>If your plugin is simple a vtk filter and associated xml, you can also write a vtk code using it. Mush smaller in this case.<br></div><div><br></div>Regards,<br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Mathieu Westphal<br></div></div></div>
<br><div class="gmail_quote">On Wed, Mar 1, 2017 at 11:40 AM, houssen <span dir="ltr"><<a href="mailto:houssen@ipgp.fr" target="_blank">houssen@ipgp.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">How to valgrind a paraview plugin ?<br>
<br>
I have a paraview plugin (filter) : I would like to get an MLK analysis of it (to know about memory leaks, and more importantly, about invalid read / write).<br>
<br>
I wrote a as-short-as-possible python script (open_filter.py) that open a XDMF file and apply the filter on it. For a try, I started with:<br>
~> valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --track-origins=yes --log-file=log.out pvbatch open_filter.py<br>
pvbatch ends the script in less than 10 seconds, but I get nothing relevant (no error) in the log.out because, as you noticed, trace children is missing (also tested with --child-silent-after-fork but it does not help: same result, no error reported).<br>
<br>
Now I add the --trace-children=yes switch to the previous command line : this fills log.out but takes more than an hour to run a so small fraction (1/8 I would say !?) of the full scenario. Conclusion: this seems to work but make the whole thing impossible to use !<br>
<br>
I tried without success to play with --trace-children-skip. According to valgrind man (--trace-children-skip says it deals with exec), I straced the command line delegated to valgrind :<br>
~> strace pvbatch open_filter.py<br>
I get stuffs like :<br>
  execve("/path/to/pvbatch", ["pvbatch", "open_filter.py"], [/* 52 vars */]) = 0<br>
But all shared object (plugins are .so) involved seem to be straced by an open (not a exec) :<br>
  open("/lib/x86_64-linux-gnu/li<wbr>bc.so.6")<br>
So my understanding is that it makes --trace-children-skip not doing what I expected (not a kernel expert).<br>
<br>
Is there a way to valgrind "only plugins" (= a subset of paraview) ?... An efficient way !<br>
Are there best pratices on the topic ? Magic command line or switch ? Documentation about that ? Any other clue ?<br>
<br>
Franck<br>
<br>
______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensou<wbr>rce/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=<wbr>Paraview-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mail<wbr>man/listinfo/paraview-develope<wbr>rs</a><br>
</blockquote></div><br></div>