[Paraview-developers] ParaView 3.14.1 crashes when loading a state file with existing data sources in pipeline

Cory Quammen cquammen at cs.unc.edu
Fri Apr 20 13:23:38 EDT 2012


Utkarsh,

Awesome! It works for me. Thanks for fixing it so fast.

Cory

On Fri, Apr 20, 2012 at 1:08 PM, Utkarsh Ayachit
<utkarsh.ayachit at kitware.com> wrote:
> Thanks for reporting, I've pushed a fix. Attached is the patch.
>
> (http://paraview.org/Bug/view.php?id=13114)
>
> Utkarsh
>
> On Thu, Apr 19, 2012 at 3:36 PM, Cory Quammen <cquammen at cs.unc.edu> wrote:
>> Hi all,
>>
>> In ParaView 3.12, I could define a pipeline and then open a state
>> file. The sources and filters defined in the state file would then be
>> added to the existing pipeline.
>>
>> In ParaView 3.14.1, I get a crash when I try to do this. Here are the
>> steps to reproduce it:
>>
>> 1). Run ParaView
>> 2). Save a state file (nothing in the pipeline)
>> 3). Add a source (I've tried Text source and Sphere source)
>> 4). Load the state file in step 2
>> 5). Crash
>>
>> If I load the blank state file with nothing in the pipeline, there is no crash.
>>
>> I compiled a debug version of ParaView 3.14.1 and ran it through
>> valgrind, following the steps above. The valgrind output indicates
>> that there are invalid reads of deleted objects
>>
>> 9941== Invalid read of size 8
>> ==19941==    at 0x1029FED1: QMetaObject::cast(QObject*) const (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so.4.8.0)
>> ==19941==    by 0x50BFC2C: pqView* qobject_cast<pqView*>(QObject*)
>> (qobject.h:380)
>> ==19941==    by 0x5A25AD1:
>> pqApplicationCore::loadState(vtkPVXMLElement*, pqServer*)
>> (pqApplicationCore.cxx:534)
>> ==19941==    by 0x4C9ABBD: pqLoadStateReaction::loadState(QString
>> const&) (pqLoadStateReaction.cxx:79)
>> ==19941==    by 0x4C9AF08: pqLoadStateReaction::loadState()
>> (pqLoadStateReaction.cxx:110)
>> ==19941==    by 0x4CCE6BE: pqLoadStateReaction::onTriggered()
>> (pqLoadStateReaction.h:61)
>> ==19941==    by 0x4CD0549: pqReaction::qt_static_metacall(QObject*,
>> QMetaObject::Call, int, void**) (moc_pqReaction.cxx:52)
>> ==19941==    by 0x102B06A5: QMetaObject::activate(QObject*,
>> QMetaObject const*, int, void**) (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so.4.8.0)
>> ==19941==    by 0xECDFF31: QAction::triggered(bool) (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so.4.8.0)
>> ==19941==    by 0xECE16AA: QAction::activate(QAction::ActionEvent) (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so.4.8.0)
>> ==19941==    by 0xF15DDA0: ??? (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so.4.8.0)
>> ==19941==    by 0xF163829: ??? (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so.4.8.0)
>> ==19941==  Address 0x2a7bfd00 is 0 bytes inside a block of size 80 free'd
>> ==19941==    at 0x4A0545F: operator delete(void*) (vg_replace_malloc.c:387)
>> ==19941==    by 0x5ADB311:
>> pqTextRepresentation::~pqTextRepresentation()
>> (pqTextRepresentation.cxx:51)
>> ==19941==    by 0x5ABFF7C:
>> pqServerManagerModel::onProxyUnRegistered(QString const&, QString
>> const&, vtkSMProxy*) (pqServerManagerModel.cxx:452)
>> ==19941==    by 0x5AF07D5:
>> pqServerManagerModel::qt_static_metacall(QObject*, QMetaObject::Call,
>> int, void**) (moc_pqServerManagerModel.cxx:158)
>> ==19941==    by 0x102B06A5: QMetaObject::activate(QObject*,
>> QMetaObject const*, int, void**) (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so.4.8.0)
>> ==19941==    by 0x5AF1D04:
>> pqServerManagerObserver::proxyUnRegistered(QString const&, QString
>> const&, vtkSMProxy*) (moc_pqServerManagerObserver.cxx:164)
>> ==19941==    by 0x5AC3A33:
>> pqServerManagerObserver::proxyUnRegistered(vtkObject*, unsigned long,
>> void*, void*, vtkCommand*) (pqServerManagerObserver.cxx:184)
>> ==19941==    by 0x5AF192C:
>> pqServerManagerObserver::qt_static_metacall(QObject*,
>> QMetaObject::Call, int, void**) (moc_pqServerManagerObserver.cxx:90)
>> ==19941==    by 0x102B06A5: QMetaObject::activate(QObject*,
>> QMetaObject const*, int, void**) (in
>> /playpen2/cquammen/dev/packages/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so.4.8.0)
>> ==19941==    by 0xCE4D51C: vtkQtConnection::EmitExecute(vtkObject*,
>> unsigned long, void*, void*, vtkCommand*)
>> (moc_vtkQtConnection.cxx:104)
>> ==19941==    by 0xCE19E52: vtkQtConnection::Execute(vtkObject*,
>> unsigned long, void*) (vtkQtConnection.cxx:72)
>> ==19941==    by 0xCE19DDD: vtkQtConnection::DoCallback(vtkObject*,
>> unsigned long, void*, void*) (vtkQtConnection.cxx:62)
>>
>> It looks like pqApplicationCore::loadState() is attempting to read a
>> proxy that has been free'd in
>> pqServerManagerModel::onProxyUnRegistered().
>>
>> Could someone who know more about the proxy management take a look at
>> this? We have a branded ParaView application that inserts a text
>> source in the pipeline at start up, which means that no one can load
>> state files without deleting the text source first.
>>
>> Thanks,
>> Cory
>>
>> --
>> Cory Quammen
>> Research Associate
>> Department of Computer Science
>> The University of North Carolina at Chapel Hill
>> _______________________________________________
>> Paraview-developers mailing list
>> Paraview-developers at paraview.org
>> http://public.kitware.com/mailman/listinfo/paraview-developers



-- 
Cory Quammen
Research Associate
Department of Computer Science
The University of North Carolina at Chapel Hill


More information about the Paraview-developers mailing list