Thanks Utkarsh! Now, I think I will let you in peace for a while ;) Best regards, Jerome
2010/6/4 Utkarsh Ayachit <[email protected]>: > Jerome, > > I've committed a fix. The problem was that vtkSplineFilter was not > naming all arrays in produced in its output. Attached is a patch. > > commit 52e308acb8265e019db973197e1a4c857f58e8d4 > Author: Utkarsh Ayachit <[email protected]> > Date: Fri Jun 4 09:50:47 2010 -0400 > > vtkSplineFilter not naming tcoords array. Fixed that. > > Utkarsh > > On Fri, Jun 4, 2010 at 8:28 AM, Jérôme <[email protected]> wrote: >> After tracing the code, I found that the segfault occurs when ParaView >> attempts >> to sort the DataArray by alphabetic order. >> >> After update the SplineFilter, ParaView tries to create a new representation >> (pqDisplayPolicy). For this matter, pqObjectBuilder set the default >> property for this >> new representation (pqObjectBuilder.cxx, line 513). >> etc, etc... Here is the call stack before the sort function that >> causes the segfault : >> >>> >>> vtkPVServerCommon.dll!vtkPVDataSetAttributesInformation::CopyFromDataSetAttributes(vtkDataSetAttributes >>> * da=0x13c8ad80) Ligne 195 C++ >> vtkPVServerCommon.dll!vtkPVDataInformation::CopyFromDataSet(vtkDataSet >> * data=0x13c8aa28) Ligne 445 C++ >> vtkPVServerCommon.dll!vtkPVDataInformation::CopyFromObject(vtkObject >> * object=0x13c8aa28) Ligne 609 + 0x16 octets C++ >> vtkPVFilters.dll!vtkPVGeometryInformation::CopyFromObject(vtkObject >> * object=0x13c25c10) Ligne 55 C++ >> vtkPVServerCommon.dll!vtkSelfConnection::GatherInformation(unsigned >> int __formal=21, vtkPVInformation * info=0x13c8a158, vtkClientServerID >> id={...}) Ligne 149 + 0x13 octets C++ >> >> vtkPVServerCommon.dll!vtkProcessModuleConnectionManager::GatherInformation(int >> connectionID=5, unsigned int serverFlags=21, vtkPVInformation * >> info=0x13c8a158, vtkClientServerID id={...}) Ligne 563 + 0x1b >> octets C++ >> vtkPVServerCommon.dll!vtkProcessModule::GatherInformation(int >> connectionID=5, unsigned int serverFlags=21, vtkPVInformation * >> info=0x13c8a158, vtkClientServerID id={...}) Ligne 299 C++ >> >> vtkPVServerManager.dll!vtkSMSimpleStrategy::GatherInformation(vtkPVInformation >> * info=0x13c8a158) Ligne 91 + 0x3e octets C++ >> >> vtkPVServerManager.dll!vtkSMRepresentationStrategy::UpdateDataInformation() >> Ligne 218 + 0x16 octets C++ >> >> vtkPVServerManager.dll!vtkSMDataRepresentationProxy::GetRepresentedDataInformation(bool >> update=true) Ligne 346 + 0x2d octets C++ >> >> vtkPVServerManager.dll!vtkSMPVRepresentationProxy::GetRepresentedDataInformation(bool >> update=true) Ligne 426 + 0x23 octets C++ >> pqCore.dll!pqPipelineRepresentation::setDefaultPropertyValues() >> Ligne 415 + 0x14 octets C++ >> pqCore.dll!pqObjectBuilder::createDataRepresentation(pqOutputPort * >> opPort=0x1150dac0, pqView * view=0x0d5c0f48, const QString & >> representationType={...}) Ligne 513 + 0xf octets C++ >> pqCore.dll!pqDisplayPolicy::newRepresentation(pqOutputPort * >> port=0x1150dac0, pqView * view=0x0d5c0f48) Ligne 346 + 0x48 >> octets C++ >> pqCore.dll!pqDisplayPolicy::setRepresentationVisibility(pqOutputPort >> * opPort=0x1150dac0, pqView * view=0x0d5c0f48, bool visible=true) >> Ligne 279 + 0x17 octets C++ >> pqCore.dll!pqDisplayPolicy::createPreferredRepresentation(pqOutputPort >> * opPort=0x1150dac0, pqView * view=0x0d5c0f48, bool >> dont_create_view=false) Ligne 248 + 0x19 octets C++ >> >> >> The guilty line is >> vtkPVDataSetAttributesInformation.cxx, line 194 >> I put a breakpoint here. >> >> the array to sort has the value : >> ({arrayIndx=0 arrayName=0x00000000 <Ptr> incorrect },{arrayIndx=1 >> arrayName=0x13c8d198 "vtkOriginalPointIds" }) >> the null pointer for the first array is problematic for the >> alphabetical sorting. Thus I tried to simply skip this instruction. >> The execution stop one more time at this breakpoint, but now the array >> value *concerning the spline filter* is: >> ({arrayIndx=0 arrayName=0x10b21618 "Texture Coordinates" >> },{arrayIndx=1 arrayName=0x114d37a0 "vtkOriginalPointIds" }) >> >> Then I removed the breakpoint: execution went on and the spline is >> correctly computed. However, the information panel does not show the >> DataArray !! >> >> I hope that someone can help me to enable the vtkSplineFilter in >> ParaView. Recall: my XML file was working with ParaView-3.7. >> >> Thanks a lot, and best regards, >> Jerome >> >> >> >> >> 2010/6/1 Jérôme <[email protected]>: >>> Hi again ! >>> >>> I tried to replace the SplineFilter with a ProgrammableFilter >>> containing the following script : >>> >>> input = self.GetInput() >>> splineFilter = vtk.vtkSplineFilter() >>> splineFilter.SetInput( input ) >>> splineFilter.SetSubdivideToLength() >>> splineFilter.SetLength( 1 ) >>> splineFilter.Update( ) >>> self.GetOutput().DeepCopy(splineFilter.GetOutput()) >>> >>> This way, I am able to get a spline-based resampling. It means that my >>> XML description contains an error, but I cannot find it. >>> >>> Jerome >>> >>> >>> 2010/6/1 Jérôme <[email protected]>: >>>> Hi, >>>> >>>> I was able to enable the vtkSplineFilter in ParaView-3.7 with the >>>> attached ServerManager XML. But with the current 3.9, I am having a >>>> segfault after the filter updates. Here is the WinXP32 call stack >>>> after the segfault : >>>> >>>> ntdll.dll!7c91120e() >>>> [Les frames ci-dessous sont peut-être incorrects et/ou manquants, >>>> aucun symbole chargé pour ntdll.dll] >>>> msvcr90d.dll!102d528b() >>>> msvcr90d.dll!102d5ef9() >>>> msvcr90d.dll!102c103e() >>>> msvcr90d.dll!1023d496() >>>> msvcr90d.dll!102cff17() >>>> msvcr90d.dll!102cff0e() >>>> msvcr90d.dll!102cfb2f() >>>> msvcr90d.dll!102cfadc() >>>> msvcr90d.dll!102db25b() >>>> QtCored4.dll!qMalloc(unsigned int size=48) Ligne 55 + 0xa octets >>>> C++ >>>> QtCored4.dll!QVectorData::allocate(int size=48, int alignment=4) >>>> Ligne 67 + 0x28 octets C++ >>>> QtGuid4.dll!QVector<QScriptItem>::malloc(int aalloc=1696132182) >>>> Ligne 391 + 0x23 octets C++ >>>> 00e084c8() >>>> msvcr90d.dll!1023d496() >>>> msvcr90d.dll!102d3261() >>>> msvcr90d.dll!102d3258() >>>> QtGuid4.dll!QSpanData::adjustSpanMethods() Ligne 5143 + 0xf octets >>>> C++ >>>> QtGuid4.dll!QSpanData::setup(const QBrush & brush={...}, int >>>> alpha=1697441976, QPainter::CompositionMode compositionMode=284019584) >>>> Ligne 5095 C++ >>>> 10edcb80() >>>> QtGuid4.dll!blend_color_argb(int count=-1, const QT_FT_Span_ * >>>> spans=0x00e08ae8, void * userData=0x10edcb88) Ligne 3082 C++ >>>> QtGuid4.dll!qt_span_fill_clipRect(int count=14715600, const >>>> QT_FT_Span_ * spans=0x00e10b34, void * userData=0x652d84e8) Ligne >>>> 4714 + 0x14 octets C++ >>>> 00e08ac8() >>>> >>>> Note that I also get this segfault in Fedora 12. >>>> >>>> I certainly missed something in the XML that was not fatal with the >>>> previous PV version. Please, could someone take a look at my XML, try >>>> it and tell if this is reproducible? >>>> >>>> Thanks a lot! >>>> Jerome >>>> >>> >> _______________________________________________ >> 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 >> > _______________________________________________ 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
