<HTML>
<HEAD>
<TITLE>Re: [Paraview] problem with parallel filter, segfault after last process returns</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Christine,<BR>
<BR>
I&#8217;m glad you figured that out. &nbsp;This is probably unrelated, but I noticed in your original post that you said the Controller was initialized with<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>this-&gt;SetController(vtkMultiProcessController::GetGlobalController());<BR>
</SPAN></FONT></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
This is mostly correct, but you need to make sure that you first set the Controller ivar to NULL in your constructor so that the SetController method understands that there is nothing set currently and that it does not attempt to unreference a non-existent controller.<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>this-&gt;Controller = NULL;<BR>
this-&gt;SetController(vtkMultiProcessController::GetGlobalController());<BR>
</SPAN></FONT></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
-Ken<BR>
<BR>
<BR>
On 11/6/09 3:53 PM, &quot;Christine Corbett Moran&quot; &lt;<a href="corbett@physik.uzh.ch">corbett@physik.uzh.ch</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Berk, Burlen,<BR>
<BR>
Yes this was exactly what was happening. I had allocated too small of<BR>
a buffer to receive a piece of data, which corrupted memory and was<BR>
only a problem on returning the function. Doh!; I was looking for<BR>
bigger issues when it was basic.<BR>
<BR>
Cheers,<BR>
Christine<BR>
<BR>
On Fri, Nov 6, 2009 at 10:35 PM, Berk Geveci &lt;<a href="berk.geveci@kitware.com">berk.geveci@kitware.com</a>&gt; wrote:<BR>
&gt; This makes me think that something is writing beyond the bounds of an<BR>
&gt; array corrupting memory. Any chance you can run this within valgrind?<BR>
&gt;<BR>
&gt; On Fri, Nov 6, 2009 at 12:34 PM, Christine Corbett Moran<BR>
&gt; &lt;<a href="corbett@physik.uzh.ch">corbett@physik.uzh.ch</a>&gt; wrote:<BR>
&gt;&gt; Hi,<BR>
&gt;&gt;<BR>
&gt;&gt; I'm converting my serial filters to work in parallel. In this process,<BR>
&gt;&gt; I'm run into trouble at the very last stage, after verifying that at<BR>
&gt;&gt; every stage, on every processor,  that correct data was being<BR>
&gt;&gt; sent/received, and that the final output was identical to the<BR>
&gt;&gt; algorithm as run in serial.<BR>
&gt;&gt;<BR>
&gt;&gt; The entire method runs as planned, but immediately after returning<BR>
&gt;&gt; from the RequestData method on processes 0 (the last one to return as<BR>
&gt;&gt; I have process 0 receiving data sent by other processes, and perform a<BR>
&gt;&gt; final computation). I get a segfault:<BR>
&gt;&gt; &quot;*** Process received signal ***<BR>
&gt;&gt;  Signal: Segmentation fault (11)<BR>
&gt;&gt; Signal code:  (128)<BR>
&gt;&gt; Failing at address: (nil)&quot;<BR>
&gt;&gt;<BR>
&gt;&gt; I initially thought this had something to do with the way I am using<BR>
&gt;&gt; the output vector. So as a test, I simply copy the input to the output<BR>
&gt;&gt; before doing all my computations taking into account the controller,<BR>
&gt;&gt; check these computations at every step, but actually ignore their<BR>
&gt;&gt; output in the end<BR>
&gt;&gt;<BR>
&gt;&gt; pseudocode for my test<BR>
&gt;&gt; RequstData:<BR>
&gt;&gt; 1. copy input to output<BR>
&gt;&gt; 2. if there's a controller specified and number of processors&gt;1,<BR>
&gt;&gt; perform parallel computation using controller, otherwise perform<BR>
&gt;&gt; serial computation. I don't actually store the result<BR>
&gt;&gt; 3. Return<BR>
&gt;&gt;<BR>
&gt;&gt; The segfault is not present on returning if I comment out all code in<BR>
&gt;&gt; step 2, or if the algorithm is run in serial. I know the segfault<BR>
&gt;&gt; happens after RequestData returns on process  Since in this test case,<BR>
&gt;&gt; all computations in 2. are local with no results written to output, I<BR>
&gt;&gt; am not sure what is going on. Do I need to do something special to<BR>
&gt;&gt; &quot;shutdown&quot; the controller? My destructor uses<BR>
&gt;&gt; vtkCxxSetObjectMacro(vtkCenterOfMassFilter,Controller,<BR>
&gt;&gt; vtkMultiProcessController);<BR>
&gt;&gt; via<BR>
&gt;&gt; this-&gt;SetController(0);<BR>
&gt;&gt; but the segfault is still present if I comment this out. My controller<BR>
&gt;&gt; was set in the constructor via<BR>
&gt;&gt; this-&gt;SetController(vtkMultiProcessController::GetGlobalController());<BR>
&gt;&gt;<BR>
&gt;&gt; Christine<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; Powered by www.kitware.com<BR>
&gt;&gt;<BR>
&gt;&gt; Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
&gt;&gt;<BR>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
&gt;&gt;<BR>
&gt;&gt; Follow this link to subscribe/unsubscribe:<BR>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
&gt;&gt;<BR>
&gt;<BR>
_______________________________________________<BR>
Powered by www.kitware.com<BR>
<BR>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
<BR>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
<BR>
Follow this link to subscribe/unsubscribe:<BR>
<a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
&nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
*********** &nbsp;<BR>
*** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>