[Paraview] Segmentation Fault when using the vtkPVDReader
Bogdan Daqui Herrera
bdaqui at simscale.de
Mon Oct 27 11:29:20 EDT 2014
Burlen, Uktarsh,
Thanks for the clarification. I will give this a try and write back.
This might actually also help me with another problem I am having at setting the timestep for which I want to fetch cell/point data.
This also has to be done from the pipeline object, right?
Kind Regards,
Bogdan
On 10/27/2014 04:24 PM, Utkarsh Ayachit wrote:
> Bogdan,
>
> The deal is this: the vtkPVDReader is designed for ParaView, it uses
> some of the core client-server infrastructure in ParaView. Thus, you
> can't use it directly is a VTK-based C++ executable without
> initializing ParaView environment. Initializing ParaView environment
> is not too complicated. Look at pvserver_common.h or pvpython.h, it
> should give you the necessary code. You basically use
> vtkInitializationHelper API to initialize the ParaView environment.
>
> Hope that helps,
>
> Utkarsh
>
>
> On Mon, Oct 27, 2014 at 11:14 AM, Burlen Loring <bloring at lbl.gov> wrote:
>> Unless something's changed in the pipeline recently that I'm unaware of,
>> when dealing with multiblock data you still need to force the composite data
>> pipeline first. that may or or may not be the cause of your segfault, but
>> you need to do it.
>>
>>
>> On 10/27/2014 03:56 AM, Bogdan Daqui Herrera wrote:
>>>
>>> Hi Burlen,
>>>
>>> Yes, it is a stand-alone C++ application, which makes use of VTK and
>>> Paraview as libraries, linking against them and calling functionality to
>>> interpret the data.
>>> I am not setting up any pipeline (as of now). Is this from the
>>> TestExodusTime or TestTemporalFractal examples. I will try adding this.
>>>
>>> Currently I need to read and traverse the dataset without adding any
>>> filters or processing the data. I it still needed to create a pipeline in
>>> this case?
>>>
>>> Kind regards,
>>> Bogdan
>>>
>>> On 10/24/2014 06:14 PM, Burlen Loring wrote:
>>>>
>>>> Hi Bogdan,
>>>>
>>>> You are writing a stand alone C++ app right? Are you setting up to run
>>>> the composite data pipeline as in the following example?
>>>>
>>>> 100 vtkCompositeDataPipeline* cexec=vtkCompositeDataPipeline::New();
>>>> 101 vtkAlgorithm::SetDefaultExecutivePrototype(cexec);
>>>> 102 cexec->Delete();
>>>>
>>>> Burlen
>>>>
>>>> On 10/23/2014 06:37 PM, Sebastien Jourdain wrote:
>>>>>
>>>>> Thanks Bogdan,
>>>>>
>>>>> that's not helping me but someone else might have some idea.
>>>>>
>>>>> Seb
>>>>>
>>>>> On Thu, Oct 23, 2014 at 12:19 PM, Bogdan Daqui Herrera
>>>>> <bdaqui at simscale.de <mailto:bdaqui at simscale.de>> wrote:
>>>>>
>>>>> Certainly. I should mention, I am using a pre-compiled version of
>>>>> Paraview 4.1 bundled with Salome (Ubuntu package).
>>>>>
>>>>> Here it is (using pReader->SetForceOutputTypeToMultiBlock(1)):
>>>>> ERROR: In
>>>>> /misc/dn47/SALOME/PRODUCTS/7x/opt/Ubuntu.13.10.64/7.4.0/tmp/ParaView-4.1.0_SRC/ParaViewCore/VTKExtensions/Default/vtkXMLCollectionReader.cxx,
>>>>> line 316
>>>>> vtkPVDReader (0x6559e0): Error creating
>>>>> "vtkXMLMultiBlockDataReader" using vtkPVInstantiator.
>>>>>
>>>>> Program received signal SIGSEGV, Segmentation fault.
>>>>> 0x00007ffff65c4270 in vtkXMLCollectionReader::ReadXMLDataImpl() ()
>>>>> from
>>>>> /opt/salomeUbuntu_740/ParaView-4.1.0/lib/paraview-4.1/libvtkPVVTKExtensionsDefault-pv4.1.so.1
>>>>> #0 0x00007ffff65c4270 in vtkXMLCollectionReader::ReadXMLDataImpl()
>>>>> ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkPVVTKExtensionsDefault-pv4.1.so.1
>>>>> #1 0x00007ffff68cc128 in
>>>>> vtkXMLReader::RequestData(vtkInformation*, vtkInformationVector**,
>>>>> vtkInformationVector*) () from
>>>>>
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkIOXML-pv4.1.so.1
>>>>> #2 0x00007ffff68cd35d in
>>>>> vtkXMLReader::ProcessRequest(vtkInformation*, vtkInformationVector**,
>>>>> vtkInformationVector*) () from
>>>>>
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkIOXML-pv4.1.so.1
>>>>> #3 0x00007ffff7b97fd0 in
>>>>> vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**,
>>>>> vtkInformationVector*) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #4 0x00007ffff7b93447 in
>>>>> vtkDemandDrivenPipeline::ExecuteData(vtkInformation*,
>>>>> vtkInformationVector**, vtkInformationVector*) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #5 0x00007ffff7b91181 in
>>>>> vtkCompositeDataPipeline::ExecuteData(vtkInformation*,
>>>>> vtkInformationVector**, vtkInformationVector*) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #6 0x00007ffff7b95bb1 in
>>>>> vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*,
>>>>> vtkInformationVector**, vtkInformationVector*) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #7 0x00007ffff7ba8c21 in
>>>>> vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*,
>>>>> vtkInformationVector**, vtkInformationVector*) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #8 0x00007ffff7b9486d in vtkDemandDrivenPipeline::UpdateData(int)
>>>>> ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #9 0x00007ffff7ba9765 in
>>>>> vtkStreamingDemandDrivenPipeline::Update(int) ()
>>>>> from
>>>>> /opt/salome_740/ParaView-4.1.0/lib/paraview-4.1/libvtkCommonExecutionModel-pv4.1.so.1
>>>>> #10 0x0000000000414fbf in testing::TestingIO::read (this=0x652b30,
>>>>> fileName=..., pMultiBlockDataSet=...)
>>>>> at /home/.../someProject/src/testing.cpp:85
>>>>>
>>>>>
>>>>> Please let me know if you need something additional
>>>>> On 10/23/2014 07:51 PM, Sebastien Jourdain wrote:
>>>>> > If you provide the stack trace, that may be helpful.
>>>>> >
>>>>> > Seb
>>>>> >
>>>>> > On Thu, Oct 23, 2014 at 10:36 AM, Bogdan Daqui Herrera
>>>>> <bdaqui at simscale.de <mailto:bdaqui at simscale.de> <mailto:bdaqui at simscale.de
>>>>> <mailto:bdaqui at simscale.de>>> wrote:
>>>>> >
>>>>> > Hi Seb,
>>>>> >
>>>>> > Thanks for the quick reply. Yes the project is managed with
>>>>> CMake. I have not however been able to find the relevant posts by Marcus (in
>>>>> the users
>>>>> list). Is
>>>>> > that in the users or developers mailing list?
>>>>> >
>>>>> > It does sound like it could be a problem with some
>>>>> initialization, as you can see below.
>>>>> >
>>>>> > One short update, it looks like setting
>>>>> ForceMultiBlockDataSet Output with:
>>>>> > pReader->SetForceOutputTypeToMultiBlock(1);
>>>>> > leads to the segmentation fault at Update() (The deepcopy is
>>>>> never reached). With or without setting the previous line, the error
>>>>> > vtkPVDReader (0x1cb49e0): Error creating
>>>>> "vtkXMLMultiBlockDataReader" using vtkPVInstantiator.
>>>>> >
>>>>> > The code looks like this now:
>>>>> > vtkSmartPointer < vtkPVDReader > pReader =
>>>>> vtkSmartPointer < vtkPVDReader >::New();
>>>>> > pReader->SetFileName("/some/file.pvd");
>>>>> > pReader->Update(); (where the error is triggered)
>>>>> >
>>>>> > Kind Regards,
>>>>> > Bogdan
>>>>> >
>>>>> > On 10/23/2014 04:47 PM, Sebastien Jourdain wrote:
>>>>> > > Hi Bogdan,
>>>>> > >
>>>>> > > here are some issue in your code:
>>>>> > >
>>>>> > > vtkSmartPointer <vtkPVDReader> pReader =
>>>>> vtkPVDReader::New(); // <== Memory LEAK
>>>>> > > // Should be either
>>>>> > > // vtkNew<vtkPVDReader> pReader;
>>>>> > > // vtkSmartPointer<vtkPVDReader> pReader =
>>>>> vtkSmartPointer<vtkPVDReader>::New()
>>>>> > >
>>>>> > > Then here on a "NULL" object you try to call a method.
>>>>> > >
>>>>> > > vtkMultiBlockDataSet*
>>>>> pMultiBlockDataSet->DeepCopy(vtkMultiBlockDataSet::SafeDownCast(pReader->GetOutputDataObject(0)));
>>>>> > >
>>>>> > > Should be something like that:
>>>>> > >
>>>>> > > vtkNew< vtkMultiBlockDataSet > pMultiBlockDataSet;
>>>>> > >
>>>>> pMultiBlockDataSet->DeepCopy(vtkMultiBlockDataSet::SafeDownCast(pReader->GetOutputDataObject(0)));
>>>>> > >
>>>>> > > Then you might have some other issue where pReader output
>>>>> being empty/null, but for that I don't know.
>>>>> > >
>>>>> > > Are you managing your project with CMake? Did you include
>>>>> the necessary file with the proper dependency declaration. This seems to be
>>>>> related to
>>>>> the factory not
>>>>> > > being properly initialized. You can search the mailing
>>>>> list, Marcus did answer several questions about that.
>>>>> > >
>>>>> > > Seb
>>>>> > >
>>>>> > >
>>>>> > >
>>>>> > > On Thu, Oct 23, 2014 at 7:26 AM, Bogdan Daqui Herrera
>>>>> <bdaqui at simscale.de <mailto:bdaqui at simscale.de> <mailto:bdaqui at simscale.de
>>>>> <mailto:bdaqui at simscale.de>> <mailto:bdaqui at simscale.de
>>>>> <mailto:bdaqui at simscale.de>
>>>>> > <mailto:bdaqui at simscale.de <mailto:bdaqui at simscale.de>>>>
>>>>> wrote:
>>>>> > >
>>>>> > > Hello all,
>>>>> > >
>>>>> > > I am attempting to write some code in c++ which uses
>>>>> the vtkPVDReader from the paraview library to read a series of vtm files.
>>>>> However I am
>>>>> > encountering some
>>>>> > > problems and I am not sure whether there is something I
>>>>> am missing or whether this could be a bug.
>>>>> > >
>>>>> > > I am trying to use the reader in the following manner:
>>>>> > > My Code:
>>>>> > > vtkSmartPointer <vtkPVDReader> pReader =
>>>>> vtkPVDReader::New();
>>>>> > > pReader->SetForceOutputTypeToMultiBlock(1);
>>>>> > > pReader->SetFileName("/some/fileName.pvd");
>>>>> > > pReader->Update();
>>>>> > > vtkMultiBlockDataSet*
>>>>> pMultiBlockDataSet->DeepCopy(vtkMultiBlockDataSet::SafeDownCast(pReader->GetOutputDataObject(0)));
>>>>> > >
>>>>> > > Error:
>>>>> > > The error occurs at Update() with the following
>>>>> result:
>>>>> > > ERROR: In
>>>>> /misc/dn47/SALOME/PRODUCTS/7x/opt/Ubuntu.13.10.64/7.4.0/tmp/ParaView-4.1.0_SRC/ParaViewCore/VTKExtensions/Default
>>>>> > > /vtkXMLCollectionReader.cxx, line 316
>>>>> > > vtkPVDReader (0x224d9e0): Error creating
>>>>> "vtkXMLMultiBlockDataReader" using vtkPVInstantiator.
>>>>> > > Segmentation fault
>>>>> > >
>>>>> > > Possible error Source
>>>>> > > The code concerning line 316 from
>>>>> vtkXMLCollectionReader.cxx is:
>>>>> > >
>>>>> > > // Use the instantiator to create the reader.
>>>>> > > vtkObject* o =
>>>>> vtkPVInstantiator::CreateInstance(rname);
>>>>> > > vtkXMLReader* reader =
>>>>> vtkXMLReader::SafeDownCast(o);
>>>>> > > this->Internal->Readers[index] = reader;
>>>>> > > if(reader)
>>>>> > > {
>>>>> > > reader->Delete();
>>>>> > > }
>>>>> > > else
>>>>> > > {
>>>>> > > // The class was not registered with the
>>>>> instantiator.
>>>>> > > vtkErrorMacro("Error creating \"" << rname
>>>>> > > << "\" using
>>>>> vtkPVInstantiator.");
>>>>> > > if(o)
>>>>> > > {
>>>>> > > o->Delete();
>>>>> > > }
>>>>> > > }
>>>>> > > }
>>>>> > >
>>>>> > > I have isolated the following lines and tested them
>>>>> independently:
>>>>> > > vtkObject* o =
>>>>> vtkPVInstantiator::CreateInstance(rname);
>>>>> > > vtkXMLReader* reader =
>>>>> vtkXMLReader::SafeDownCast(o);
>>>>> > >
>>>>> > > The pointer "vtkObject* o" is NULL regardless of the
>>>>> class name I pass to instantiate, and I can imagine something like that
>>>>> happening in the
>>>>> library,
>>>>> > too and
>>>>> > > causing the segmentation fault, when calling a
>>>>> SafeDownCast(o) (which is NULL).
>>>>> > >
>>>>> > >
>>>>> > > Any suggestions on how to deal with this problem or if
>>>>> you would be so kind to point me to an example for an alternative solution
>>>>> (Could be
>>>>> > vtkFileSeriesReader,
>>>>> > > but this fails, as well in my case) would be
>>>>> appreciated.
>>>>> > >
>>>>> > > Kind Regards,
>>>>> > > Bogdan
>>>>> > >
>>>>> > > P.S.: Using the PVDReader from python code works
>>>>> flawlessly, which is also quite confusing, as to why it would fail in the
>>>>> C++ code.
>>>>> > >
>>>>> > > --
>>>>> > > Bogdan Daqui
>>>>> > > Software Development
>>>>> > >
>>>>> > > SimScale GmbH
>>>>> > > Lichtenbergstraße 8
>>>>> > > 85748 Garching bei München
>>>>> > >
>>>>> > > Phone: +49 (0)89 3398 4078
>>>>> > > Email: bdaqui at simscale.de <mailto:bdaqui at simscale.de>
>>>>> <mailto:bdaqui at simscale.de <mailto:bdaqui at simscale.de>>
>>>>> <mailto:bdaqui at simscale.de
>>>>> <mailto:bdaqui at simscale.de> <mailto:bdaqui at simscale.de
>>>>> <mailto:bdaqui at simscale.de>>>
>>>>> > >
>>>>> > > Amtsgericht München, HRB 201813
>>>>> > > Geschäftsführer: Vincenz Dölle & David Heiny
>>>>> > >
>>>>> > > http://www.simscale.de
>>>>> > > _______________________________________________
>>>>> > > Powered by www.kitware.com <http://www.kitware.com>
>>>>> <http://www.kitware.com> <http://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://public.kitware.com/mailman/listinfo/paraview
>>>>> > >
>>>>> > >
>>>>> >
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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://public.kitware.com/mailman/listinfo/paraview
>>
>>
>> _______________________________________________
>> 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://public.kitware.com/mailman/listinfo/paraview
More information about the ParaView
mailing list