[Paraview] problem with parallel filter, segfault after last process returns

Berk Geveci berk.geveci at kitware.com
Fri Nov 6 16:35:51 EST 2009


This makes me think that something is writing beyond the bounds of an
array corrupting memory. Any chance you can run this within valgrind?

On Fri, Nov 6, 2009 at 12:34 PM, Christine Corbett Moran
<corbett at physik.uzh.ch> wrote:
> Hi,
>
> I'm converting my serial filters to work in parallel. In this process,
> I'm run into trouble at the very last stage, after verifying that at
> every stage, on every processor,  that correct data was being
> sent/received, and that the final output was identical to the
> algorithm as run in serial.
>
> The entire method runs as planned, but immediately after returning
> from the RequestData method on processes 0 (the last one to return as
> I have process 0 receiving data sent by other processes, and perform a
> final computation). I get a segfault:
> "*** Process received signal ***
>  Signal: Segmentation fault (11)
> Signal code:  (128)
> Failing at address: (nil)"
>
> I initially thought this had something to do with the way I am using
> the output vector. So as a test, I simply copy the input to the output
> before doing all my computations taking into account the controller,
> check these computations at every step, but actually ignore their
> output in the end
>
> pseudocode for my test
> RequstData:
> 1. copy input to output
> 2. if there's a controller specified and number of processors>1,
> perform parallel computation using controller, otherwise perform
> serial computation. I don't actually store the result
> 3. Return
>
> The segfault is not present on returning if I comment out all code in
> step 2, or if the algorithm is run in serial. I know the segfault
> happens after RequestData returns on process  Since in this test case,
> all computations in 2. are local with no results written to output, I
> am not sure what is going on. Do I need to do something special to
> "shutdown" the controller? My destructor uses
> vtkCxxSetObjectMacro(vtkCenterOfMassFilter,Controller,
> vtkMultiProcessController);
> via
> this->SetController(0);
> but the segfault is still present if I comment this out. My controller
> was set in the constructor via
> this->SetController(vtkMultiProcessController::GetGlobalController());
>
> Christine
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
>


More information about the ParaView mailing list