[Paraview] Enabling vtkSplineFilter in ParaView

Jérôme jerome.velut at gmail.com
Fri Jun 4 11:34:37 EDT 2010


Thanks Utkarsh!
Now, I think I will let you in peace for a while ;)

Best regards,
Jerome

2010/6/4 Utkarsh Ayachit <utkarsh.ayachit at kitware.com>:
> 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 <utkarsh.ayachit at kitware.com>
> 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 <jerome.velut at gmail.com> 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 <jerome.velut at gmail.com>:
>>> 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 <jerome.velut at gmail.com>:
>>>> 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
>>
>


More information about the ParaView mailing list