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 >
patch
Description: Binary data
_______________________________________________ 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
