[Paraview] Enabling vtkSplineFilter in ParaView

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Fri Jun 4 09:52:07 EDT 2010


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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch
Type: application/octet-stream
Size: 666 bytes
Desc: not available
URL: <http://www.paraview.org/pipermail/paraview/attachments/20100604/eaa6a139/attachment-0001.obj>


More information about the ParaView mailing list