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

Christine Corbett Moran corbett at physik.uzh.ch
Fri Nov 6 12:34:46 EST 2009


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


More information about the ParaView mailing list