View Issue Details

IDProjectCategoryView StatusLast Update
0002622Slicer4Core: GUIpublic2014-03-06 05:01
Reporterpieper Assigned Tojcfr  
PriorityhighSeveritycrashReproducibilityhave not tried
Status closedResolutionunable to reproduce 
Product Version 
Target VersionSlicer 4.3.1Fixed in VersionSlicer 4.2.0 
Summary0002622: assert crash in scene model closing scene after change tracker
Description

The change tracker tutorial all runs fine until the last step of closing the scene. At this point the following is printed and the stack trace pasted below is triggered.

Close Scene
ERROR: In /Users/pieper/slicer4/latest/Slicer/Libs/MRML/Core/vtkMRMLScene.cxx, line 1910
vtkMRMLScene (0x7fd5dbe33760): GetNodeByID: No node found for ID: vtkMRMLCPURayCastVolumeRenderingDisplayNode2

ERROR: In /Users/pieper/slicer4/latest/Slicer/Libs/MRML/Core/vtkMRMLScene.cxx, line 1391
vtkMRMLScene (0x7fd5dbe33760): RemoveNode: class: vtkMRMLCPURayCastVolumeRenderingDisplayNode name:VolumeRendering id: vtkMRMLCPURayCastVolumeRenderingDisplayNode2[0x7fd5e43003d0] can't be found by ID

ASSERT failure in qMRMLSceneModel::onMRMLSceneNodeAboutToBeRemoved(): "A node has been removed from the scene but the scene model has never been notified it has been added in the first place. Maybe vtkMRMLScene::AddNodeNoNotify() has been used instead of vtkMRMLScene::AddNode", file /Users/pieper/slicer4/latest/Slicer/Libs/MRML/Widgets/qMRMLSceneModel.cxx, line 1117
error: [/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/bin/Slicer.app/Contents/MacOS/./Slicer] exit abnormally - Report the problem.

Steps To Reproduce

As of r21126 there is an RSNA2012Quant self test which triggers this. Select the change tacker tutorial and the crash happens at the end. Note that it is actually after the volume rendering is added that the crash on scene close occurs, so if you want to reproduce more quickly you could skip the registration and analysis steps.

Note that this patch must be applied for the self test to work:

https://github.com/fedorov/ChangeTrackerPy/pull/5

Additional Information

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff896c6212 __pthread_kill + 10
1 libsystem_c.dylib 0x00007fff8763faf4 pthread_kill + 90
2 libsystem_c.dylib 0x00007fff87683dce abort + 143
3 QtCore 0x000000011b449115 qt_message_output(QtMsgType, char const) + 149
4 QtCore 0x000000011b4492cd qt_message(QtMsgType, char const
, __va_list_tag) + 381
5 QtCore 0x000000011b4494ed qFatal(char const
, ...) + 141
6 QtCore 0x000000011b44951e qt_assert_x(char const, char const, char const, int) + 30
7 libqMRMLWidgets.dylib 0x000000010ffa43b3 qMRMLSceneModel::onMRMLSceneNodeAboutToBeRemoved(vtkMRMLScene
, vtkMRMLNode) + 307 (qMRMLSceneModel.cxx:1111)
8 libqMRMLWidgets.dylib 0x000000010ff9dc76 qMRMLSceneModel::onMRMLSceneEvent(vtkObject
, unsigned long, void, void) + 614 (qMRMLSceneModel.cxx:1040)
9 libvtkCommon.5.10.dylib 0x00000001254d5104 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 84 (vtkCallbackCommand.cxx:43)
10 libvtkCommon.5.10.dylib 0x00000001255e0a75 vtkSubjectHelper::InvokeEvent(unsigned long, void, vtkObject) + 2309 (vtkObject.cxx:602)
11 libvtkCommon.5.10.dylib 0x00000001255e1022 vtkObject::InvokeEvent(unsigned long, void) + 66 (vtkObject.cxx:770)
12 libMRMLCore.dylib 0x0000000117721b85 vtkMRMLScene::RemoveNode(vtkMRMLNode
) + 2421 (vtkMRMLScene.cxx:1398)
13 libMRMLCore.dylib 0x0000000117720fdb vtkMRMLScene::RemoveAllNodesExceptSingletons() + 475 (vtkMRMLScene.cxx:529)
14 libMRMLCore.dylib 0x0000000117720c19 vtkMRMLScene::Clear(int) + 89 (vtkMRMLScene.cxx:455)
15 libMRMLCorePythonD.dylib 0x000000012f412cd1 PyvtkMRMLScene_Clear(_object, _object) + 177 (vtkMRMLScenePython.cxx:347)
16 libpython2.6.dylib 0x000000011732ad87 PyEval_EvalFrameEx + 16839 (ceval.c:3750)
17 libpython2.6.dylib 0x000000011732e083 fast_function + 179 (ceval.c:3836)
18 libpython2.6.dylib 0x000000011732ae39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
19 libpython2.6.dylib 0x000000011732df4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
20 libpython2.6.dylib 0x00000001172c0aba function_call + 394 (funcobject.c:524)
21 libpython2.6.dylib 0x0000000117299431 PyObject_Call + 97 (abstract.c:2492)
22 libpython2.6.dylib 0x00000001172ab2cf instancemethod_call + 495 (classobject.c:2580)
23 libpython2.6.dylib 0x0000000117299431 PyObject_Call + 97 (abstract.c:2492)
24 libpython2.6.dylib 0x00000001173260f4 PyEval_CallObjectWithKeywords + 180 (ceval.c:3620)
25 libPythonQt.dylib 0x00000001144e25e2 PythonQtSignalTarget::call(_object, PythonQtMethodInfo const, void, bool) + 594 (PythonQtSignalReceiver.cpp:124)
26 libPythonQt.dylib 0x00000001144e2339 PythonQtSignalTarget::call(void
) const + 73 (PythonQtSignalReceiver.cpp:55)
27 libPythonQt.dylib 0x00000001144e30b5 PythonQtSignalReceiver::qt_metacall(QMetaObject::Call, int, void) + 261 (PythonQtSignalReceiver.cpp:259)
28 QtCore 0x000000011b55a775 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 1781
29 QtGui 0x000000011ae313d1 QAbstractButton::clicked(bool) + 49
30 QtGui 0x000000011aba546e QAbstractButtonPrivate::emitClicked() + 50
31 QtGui 0x000000011aba618a QAbstractButtonPrivate::click() + 230
32 QtGui 0x000000011aba634c QAbstractButton::mouseReleaseEvent(QMouseEvent) + 106
33 libPythonQt.dylib 0x00000001147a2e80 PythonQtShell_QPushButton::mouseReleaseEvent(QMouseEvent
) + 416 (com_trolltech_qt_gui6.cpp:10329)
34 QtGui 0x000000011a89f542 QWidget::event(QEvent) + 284
35 QtGui 0x000000011aba5436 QAbstractButton::event(QEvent
) + 220
36 QtGui 0x000000011ac326f2 QPushButton::event(QEvent) + 168
37 libPythonQt.dylib 0x00000001147a088e PythonQtShell_QPushButton::event(QEvent
) + 574 (com_trolltech_qt_gui6.cpp:9957)
38 QtGui 0x000000011a8549a8 QApplicationPrivate::notify_helper(QObject, QEvent) + 304
39 QtGui 0x000000011a8552f8 QApplication::notify(QObject, QEvent) + 2346
40 QtCore 0x000000011b545a26 QCoreApplication::notifyInternal(QObject, QEvent) + 104
41 QtGui 0x000000011a85cf68 QApplicationPrivate::sendMouseEvent(QWidget, QMouseEvent, QWidget, QWidget, QWidget, QPointer<QWidget>&, bool) + 432
42 QtGui 0x000000011a80c2b1 qt_mac_handleMouseEvent(NSEvent, QEvent::Type, Qt::MouseButton, QWidget, bool) + 993
43 com.apple.AppKit 0x00007fff842b86d6 -[NSWindow sendEvent:] + 7053
44 QtGui 0x000000011a803a32 -[QCocoaWindow sendEvent:] + 114
45 com.apple.AppKit 0x00007fff842b4744 -[NSApplication sendEvent:] + 5761
46 QtGui 0x000000011a807342 -[QNSApplication sendEvent:] + 82
47 com.apple.AppKit 0x00007fff841ca2fa -[NSApplication run] + 636
48 QtGui 0x000000011a8105b0 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 840
49 QtCore 0x000000011b542e88 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 394
50 QtCore 0x000000011b54615b QCoreApplication::exec() + 175
51 0x000000010f9686bb (anonymous namespace)::SlicerAppMain(int, char
) + 4155
52 0x000000010f967672 main + 34
53 libdyld.dylib 0x00007fff863977e1 start + 1

TagsNo tags attached.

Relationships

related to 0002621 closedfinetjul Switching to VR after manually creating display node causes crash 
related to 0002713 acknowledgedjcfr vtkMRMLNode::SetScene() should be protected and set by scene 
related to 0003432 closednicole Running RSNA2012Quant test compains about missing nuclear medicine output csv parameter file 
child of 0002517 closedpieper Classroom Course 2 

Activities

finetjul

finetjul

2012-10-07 20:09

administrator   ~0006429

Most likely same problem as what is described in comment 0006428 in issue 0002621

pieper

pieper

2012-10-09 04:40

administrator   ~0006444

Last edited: 2012-10-09 04:41

After updating to r21137 I now get this crash...

(Reproduce this by going to Modules->Testing->TestCases->RSNA2012Quant and running the ChangeTracker test)

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libMRMLDisplayableManager.dylib 0x00000001132768ec std::vector<vtkMRMLDisplayNode, std::allocator<vtkMRMLDisplayNode> >::size() const + 12 (stl_vector.h:400)
1 libMRMLCore.dylib 0x0000000116c5dff8 vtkMRMLDisplayableNode::GetNthDisplayNode(int) + 40 (vtkMRMLDisplayableNode.cxx:223)
2 libqSlicerBaseQTCLI.dylib 0x000000010f1c1d7a vtkMRMLDisplayableNode::GetDisplayNode() + 26 (vtkMRMLDisplayableNode.h:244)
3 libvtkSlicerVolumeRenderingModuleLogic.dylib 0x0000000130235689 vtkSlicerVolumeRenderingLogic::CopyDisplayToVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode, vtkMRMLVolumeDisplayNode) + 121 (vtkSlicerVolumeRenderingLogic.cxx:570)
4 libvtkSlicerVolumeRenderingModuleLogicPythonD.dylib 0x000000013021dd14 PyvtkSlicerVolumeRenderingLogic_CopyDisplayToVolumeRenderingDisplayNode(_object, _object) + 260 (vtkSlicerVolumeRenderingLogicPython.cxx:456)
5 libpython2.6.dylib 0x00000001169a7d87 PyEval_EvalFrameEx + 16839 (ceval.c:3750)
6 libpython2.6.dylib 0x00000001169ab083 fast_function + 179 (ceval.c:3836)
7 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
8 libpython2.6.dylib 0x00000001169ab083 fast_function + 179 (ceval.c:3836)
9 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
10 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
11 libpython2.6.dylib 0x000000011693daba function_call + 394 (funcobject.c:524)
12 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
13 libpython2.6.dylib 0x00000001169282cf instancemethod_call + 495 (classobject.c:2580)
14 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
15 libpython2.6.dylib 0x00000001169a30f4 PyEval_CallObjectWithKeywords + 180 (ceval.c:3620)
16 libPythonQt.dylib 0x0000000113b605e2 PythonQtSignalTarget::call(_object, PythonQtMethodInfo const, void, bool) + 594 (PythonQtSignalReceiver.cpp:124)
17 libPythonQt.dylib 0x0000000113b60339 PythonQtSignalTarget::call(void
) const + 73 (PythonQtSignalReceiver.cpp:55)
18 libPythonQt.dylib 0x0000000113b610b5 PythonQtSignalReceiver::qt_metacall(QMetaObject::Call, int, void) + 261 (PythonQtSignalReceiver.cpp:259)
19 QtCore 0x000000011abdc775 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 1781
20 libqMRMLWidgets.dylib 0x000000010f688f9d qMRMLNodeComboBox::currentNodeChanged(vtkMRMLNode) + 77 (moc_qMRMLNodeComboBox.cxx:260)
21 libqMRMLWidgets.dylib 0x000000010f60eaa8 qMRMLNodeComboBox::emitCurrentNodeChanged() + 184 (qMRMLNodeComboBox.cxx:508)
22 libqMRMLWidgets.dylib 0x000000010f688d64 qMRMLNodeComboBox::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 612 (moc_qMRMLNodeComboBox.cxx:142)
23 QtCore 0x000000011abdc851 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2001
24 QtGui 0x000000011a23c7a6 QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) + 134
25 QtGui 0x000000011a23d102 QComboBoxPrivate::setCurrentIndex(QModelIndex const&) + 738
26 QtGui 0x000000011a23d52c QComboBoxPrivate::_q_itemSelected(QModelIndex const&) + 88
27 QtGui 0x000000011a239043 QComboBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 617
28 QtCore 0x000000011abdc851 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2001
29 QtGui 0x000000011a4b1512 QComboBoxPrivateContainer::itemSelected(QModelIndex const&) + 38
30 QtGui 0x000000011a23dd01 QComboBoxPrivateContainer::eventFilter(QObject, QEvent) + 435
31 QtCore 0x000000011abc5eb1 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject, QEvent) + 155
32 QtGui 0x0000000119ed3998 QApplicationPrivate::notify_helper(QObject, QEvent) + 288
33 QtGui 0x0000000119ed3f1c QApplication::notify(QObject, QEvent) + 1358
34 QtCore 0x000000011abc7a26 QCoreApplication::notifyInternal(QObject, QEvent) + 104
35 libqMRMLWidgets.dylib 0x000000010f61050a QCoreApplication::sendEvent(QObject, QEvent) + 90 (qcoreapplication.h:231)
36 libqMRMLWidgets.dylib 0x000000010f60f378 qMRMLNodeComboBox::setCurrentNode(QString const&) + 888 (qMRMLNodeComboBox.cxx:654)
37 libqMRMLWidgets.dylib 0x000000010f60e5fe qMRMLNodeComboBox::setCurrentNode(vtkMRMLNode) + 110 (qMRMLNodeComboBox.cxx:611)
38 libqMRMLWidgets.dylib 0x000000010f688c95 qMRMLNodeComboBox::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 405 (moc_qMRMLNodeComboBox.cxx:133)
39 libqMRMLWidgets.dylib 0x000000010f689441 qMRMLNodeComboBox::qt_metacall(QMetaObject::Call, int, void
) + 129 (moc_qMRMLNodeComboBox.cxx:200)
40 libPythonQt.dylib 0x0000000113b62ddb PythonQtCallSlot(PythonQtClassInfo, QObject, _object, bool, PythonQtSlotInfo, void, _object, void) + 1643 (PythonQtSlot.cpp:171)
41 libPythonQt.dylib 0x0000000113b64560 PythonQtSlotFunction_CallImpl(PythonQtClassInfo
, QObject, PythonQtSlotInfo, _object, _object, void*, void) + 304 (PythonQtSlot.cpp:312)
42 libPythonQt.dylib 0x0000000113b639fa PythonQtMemberFunction_Call(PythonQtSlotInfo, _object, _object, _object) + 810 (PythonQtSlot.cpp:250)
43 libPythonQt.dylib 0x0000000113b636c9 PythonQtSlotFunction_Call(_object, _object, _object) + 57 (PythonQtSlot.cpp:238)
44 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
45 libpython2.6.dylib 0x00000001169a8055 PyEval_EvalFrameEx + 17557 (ceval.c:3968)
46 libpython2.6.dylib 0x00000001169ab083 fast_function + 179 (ceval.c:3836)
47 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
48 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
49 libpython2.6.dylib 0x000000011693daba function_call + 394 (funcobject.c:524)
50 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
51 libpython2.6.dylib 0x00000001169282cf instancemethod_call + 495 (classobject.c:2580)
52 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
53 libpython2.6.dylib 0x00000001169a30f4 PyEval_CallObjectWithKeywords + 180 (ceval.c:3620)
54 libPythonQt.dylib 0x0000000113b605e2 PythonQtSignalTarget::call(_object
, PythonQtMethodInfo const*, void, bool) + 594 (PythonQtSignalReceiver.cpp:124)
55 libPythonQt.dylib 0x0000000113b60339 PythonQtSignalTarget::call(void
) const + 73 (PythonQtSignalReceiver.cpp:55)
56 libPythonQt.dylib 0x0000000113b610b5 PythonQtSignalReceiver::qt_metacall(QMetaObject::Call, int, void) + 261 (PythonQtSignalReceiver.cpp:259)
57 QtCore 0x000000011abdc775 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 1781
58 libCTKCore.0.1.dylib 0x000000011579003d ctkWorkflowStepPrivate::invokeOnEntryCommand(ctkWorkflowStep const, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 93 (moc_ctkWorkflowStep_p.cxx:132)
59 libCTKCore.0.1.dylib 0x000000011578a633 ctkWorkflowStepPrivate::invokeOnEntryCommandInternal(ctkWorkflowStep const
, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 35 (ctkWorkflowStep.cpp:117)
60 libCTKCore.0.1.dylib 0x000000011578b280 ctkWorkflowStep::invokeOnEntryCommand(ctkWorkflowStep const, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 48 (ctkWorkflowStep.cpp:250)
61 libCTKCore.0.1.dylib 0x0000000115782c70 ctkWorkflowPrivate::onEntryInternal(ctkWorkflowStep
, ctkWorkflowStep, ctkWorkflowInterstepTransition::InterstepTransitionType const&) + 368 (ctkWorkflow.cpp:361)
62 libCTKCore.0.1.dylib 0x0000000115783110 ctkWorkflowPrivate::processingAfterOnExit() + 64 (ctkWorkflow.cpp:457)
63 libCTKCore.0.1.dylib 0x000000011578fc04 ctkWorkflowPrivate::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 164 (moc_ctkWorkflow_p.cxx:52)
64 QtCore 0x000000011abdc851 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2001
65 libCTKCore.0.1.dylib 0x000000011579014b ctkWorkflowStepPrivate::onExitComplete() const + 43 (moc_ctkWorkflowStep_p.cxx:152)
66 libCTKCore.0.1.dylib 0x000000011578fecd ctkWorkflowStepPrivate::qt_static_metacall(QObject*, QMetaObject::Call, int, void
) + 301 (moc_ctkWorkflowStep_p.cxx:69)
67 libCTKCore.0.1.dylib 0x00000001157902ce ctkWorkflowStepPrivate::qt_metacall(QMetaObject::Call, int, void) + 126 (moc_ctkWorkflowStep_p.cxx:109)
68 libCTKWidgets.0.1.dylib 0x00000001106f0193 ctkWorkflowWidgetStepPrivate::qt_metacall(QMetaObject::Call, int, void
) + 51 (moc_ctkWorkflowWidgetStep_p.cxx:99)
69 libPythonQt.dylib 0x0000000113b62ddb PythonQtCallSlot(PythonQtClassInfo, QObject, _object, bool, PythonQtSlotInfo, void, _object, void) + 1643 (PythonQtSlot.cpp:171)
70 libPythonQt.dylib 0x0000000113b648a8 PythonQtSlotFunction_CallImpl(PythonQtClassInfo
, QObject, PythonQtSlotInfo, _object, _object, void*, void) + 1144 (PythonQtSlot.cpp:338)
71 libPythonQt.dylib 0x0000000113b639fa PythonQtMemberFunction_Call(PythonQtSlotInfo, _object, _object, _object) + 810 (PythonQtSlot.cpp:250)
72 libPythonQt.dylib 0x0000000113b66179 PythonQtSignalFunction_Call(_object, _object, _object) + 57 (PythonQtSignal.cpp:64)
73 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
74 libpython2.6.dylib 0x00000001169a8055 PyEval_EvalFrameEx + 17557 (ceval.c:3968)
75 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
76 libpython2.6.dylib 0x00000001169ab0f8 fast_function + 296 (ceval.c:3846)
77 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
78 libpython2.6.dylib 0x00000001169ab083 fast_function + 179 (ceval.c:3836)
79 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
80 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
81 libpython2.6.dylib 0x000000011693daba function_call + 394 (funcobject.c:524)
82 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
83 libpython2.6.dylib 0x00000001169282cf instancemethod_call + 495 (classobject.c:2580)
84 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
85 libpython2.6.dylib 0x00000001169a30f4 PyEval_CallObjectWithKeywords + 180 (ceval.c:3620)
86 libPythonQt.dylib 0x0000000113b605e2 PythonQtSignalTarget::call(_object
, PythonQtMethodInfo const*, void, bool) + 594 (PythonQtSignalReceiver.cpp:124)
87 libPythonQt.dylib 0x0000000113b60339 PythonQtSignalTarget::call(void
) const + 73 (PythonQtSignalReceiver.cpp:55)
88 libPythonQt.dylib 0x0000000113b610b5 PythonQtSignalReceiver::qt_metacall(QMetaObject::Call, int, void) + 261 (PythonQtSignalReceiver.cpp:259)
89 QtCore 0x000000011abdc775 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 1781
90 libCTKCore.0.1.dylib 0x00000001157900fd ctkWorkflowStepPrivate::invokeOnExitCommand(ctkWorkflowStep const, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 93 (moc_ctkWorkflowStep_p.cxx:145)
91 libCTKCore.0.1.dylib 0x000000011578a663 ctkWorkflowStepPrivate::invokeOnExitCommandInternal(ctkWorkflowStep const
, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 35 (ctkWorkflowStep.cpp:123)
92 libCTKCore.0.1.dylib 0x000000011578b2c0 ctkWorkflowStep::invokeOnExitCommand(ctkWorkflowStep const, ctkWorkflowInterstepTransition::InterstepTransitionType) const + 48 (ctkWorkflowStep.cpp:257)
93 libCTKCore.0.1.dylib 0x0000000115783040 ctkWorkflowPrivate::onExitInternal(ctkWorkflowStep
, ctkWorkflowStep, ctkWorkflowInterstepTransition::InterstepTransitionType const&) + 368 (ctkWorkflow.cpp:443)
94 libCTKCore.0.1.dylib 0x0000000115785bd7 ctkWorkflow::performTransitionBetweenSteps() + 471 (ctkWorkflow.cpp:1067)
95 libCTKCore.0.1.dylib 0x000000011578ee36 ctkWorkflow::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 614 (moc_ctkWorkflow.cxx:141)
96 QtCore 0x000000011abdc851 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2001
97 QtCore 0x000000011ac0389f QStateMachinePrivate::executeTransitionContent(QEvent, QList<QAbstractTransition> const&) + 103
98 QtCore 0x000000011ac0401e QStateMachinePrivate::microstep(QEvent, QList<QAbstractTransition> const&) + 54
99 QtCore 0x000000011ac03df3 QStateMachinePrivate::_q_process() + 547
100 QtCore 0x000000011abdb9c4 QObject::event(QEvent) + 286
101 QtCore 0x000000011ac0c0b1 QAbstractState::event(QEvent
) + 9
102 QtCore 0x000000011ac0c437 QState::event(QEvent) + 43
103 QtCore 0x000000011abffe80 QStateMachine::event(QEvent
) + 296
104 QtGui 0x0000000119ed39a8 QApplicationPrivate::notify_helper(QObject, QEvent) + 304
105 QtGui 0x0000000119ed3c29 QApplication::notify(QObject, QEvent) + 603
106 QtCore 0x000000011abc7a26 QCoreApplication::notifyInternal(QObject, QEvent) + 104
107 QtCore 0x000000011abc7e13 QCoreApplicationPrivate::sendPostedEvents(QObject, int, QThreadData) + 557
108 com.apple.CoreFoundation 0x00007fff83b23101 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
109 com.apple.CoreFoundation 0x00007fff83b22a25 CFRunLoopDoSources0 + 245
110 com.apple.CoreFoundation 0x00007fff83b45dc5
CFRunLoopRun + 789
111 com.apple.CoreFoundation 0x00007fff83b456b2 CFRunLoopRunSpecific + 290
112 com.apple.HIToolbox 0x00007fff84b700a4 RunCurrentEventLoopInMode + 209
113 com.apple.HIToolbox 0x00007fff84b6fd84 ReceiveNextEventCommon + 166
114 com.apple.HIToolbox 0x00007fff84b6fcd3 BlockUntilNextEventMatchingListInMode + 62
115 com.apple.AppKit 0x00007fff88766613 _DPSNextEvent + 685
116 com.apple.AppKit 0x00007fff88765ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
117 com.apple.AppKit 0x00007fff889b0709 -[NSApplication _realDoModalLoop:peek:] + 485
118 com.apple.AppKit 0x00007fff889b0e3e -[NSApplication runModalSession:] + 49
119 QtGui 0x0000000119e8f50f QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 679
120 QtCore 0x000000011abc4e88 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 394
121 QtGui 0x000000011a30e583 QDialog::exec() + 243
122 QtGui 0x000000011a30cb3c QDialog::qt_static_metacall(QObject*, QMetaObject::Call, int, void
) + 134
123 QtGui 0x000000011a30e683 QDialog::qt_metacall(QMetaObject::Call, int, void) + 97
124 libPythonQt.dylib 0x0000000113b62ddb PythonQtCallSlot(PythonQtClassInfo, QObject, _object, bool, PythonQtSlotInfo, void, _object, void) + 1643 (PythonQtSlot.cpp:171)
125 libPythonQt.dylib 0x0000000113b648a8 PythonQtSlotFunction_CallImpl(PythonQtClassInfo
, QObject, PythonQtSlotInfo, _object, _object, void*, void*) + 1144 (PythonQtSlot.cpp:338)
126 libPythonQt.dylib 0x0000000113b639fa PythonQtMemberFunction_Call(PythonQtSlotInfo
, _object, _object, _object) + 810 (PythonQtSlot.cpp:250)
127 libPythonQt.dylib 0x0000000113b636c9 PythonQtSlotFunction_Call(_object
, _object, _object) + 57 (PythonQtSlot.cpp:238)
128 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
129 libpython2.6.dylib 0x00000001169a8055 PyEval_EvalFrameEx + 17557 (ceval.c:3968)
130 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
131 libpython2.6.dylib 0x00000001169ab0f8 fast_function + 296 (ceval.c:3846)
132 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
133 libpython2.6.dylib 0x00000001169ab083 fast_function + 179 (ceval.c:3836)
134 libpython2.6.dylib 0x00000001169a7e39 PyEval_EvalFrameEx + 17017 (ceval.c:3771)
135 libpython2.6.dylib 0x00000001169aaf4e PyEval_EvalCodeEx + 2126 (ceval.c:3000)
136 libpython2.6.dylib 0x000000011693daba function_call + 394 (funcobject.c:524)
137 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
138 libpython2.6.dylib 0x00000001169282cf instancemethod_call + 495 (classobject.c:2580)
139 libpython2.6.dylib 0x0000000116916431 PyObject_Call + 97 (abstract.c:2492)
140 libpython2.6.dylib 0x00000001169a30f4 PyEval_CallObjectWithKeywords + 180 (ceval.c:3620)
141 libPythonQt.dylib 0x0000000113b605e2 PythonQtSignalTarget::call(_object, PythonQtMethodInfo const, void
, bool) + 594 (PythonQtSignalReceiver.cpp:124)
142 libPythonQt.dylib 0x0000000113b60339 PythonQtSignalTarget::call(void) const + 73 (PythonQtSignalReceiver.cpp:55)
143 libPythonQt.dylib 0x0000000113b610b5 PythonQtSignalReceiver::qt_metacall(QMetaObject::Call, int, void
) + 261 (PythonQtSignalReceiver.cpp:259)
144 QtCore 0x000000011abdc775 QMetaObject::activate(QObject, QMetaObject const, int, void) + 1781
145 QtGui 0x000000011a4b03d1 QAbstractButton::clicked(bool) + 49
146 QtGui 0x000000011a22446e QAbstractButtonPrivate::emitClicked() + 50
147 QtGui 0x000000011a22518a QAbstractButtonPrivate::click() + 230
148 QtGui 0x000000011a22534c QAbstractButton::mouseReleaseEvent(QMouseEvent) + 106
149 libPythonQt.dylib 0x0000000113e20e80 PythonQtShell_QPushButton::mouseReleaseEvent(QMouseEvent
) + 416 (com_trolltech_qt_gui6.cpp:10329)
150 QtGui 0x0000000119f1e542 QWidget::event(QEvent) + 284
151 QtGui 0x000000011a224436 QAbstractButton::event(QEvent
) + 220
152 QtGui 0x000000011a2b16f2 QPushButton::event(QEvent) + 168
153 libPythonQt.dylib 0x0000000113e1e88e PythonQtShell_QPushButton::event(QEvent
) + 574 (com_trolltech_qt_gui6.cpp:9957)
154 QtGui 0x0000000119ed39a8 QApplicationPrivate::notify_helper(QObject, QEvent) + 304
155 QtGui 0x0000000119ed42f8 QApplication::notify(QObject, QEvent) + 2346
156 QtCore 0x000000011abc7a26 QCoreApplication::notifyInternal(QObject, QEvent) + 104
157 QtGui 0x0000000119edbf68 QApplicationPrivate::sendMouseEvent(QWidget, QMouseEvent, QWidget, QWidget, QWidget
, QPointer<QWidget>&, bool) + 432
158 QtGui 0x0000000119e8b2b1 qt_mac_handleMouseEvent(NSEvent, QEvent::Type, Qt::MouseButton, QWidget, bool) + 993
159 com.apple.AppKit 0x00007fff8884b6d6 -[NSWindow sendEvent:] + 7053
160 QtGui 0x0000000119e82a32 -[QCocoaWindow sendEvent:] + 114
161 com.apple.AppKit 0x00007fff88847744 -[NSApplication sendEvent:] + 5761
162 QtGui 0x0000000119e86342 -[QNSApplication sendEvent:] + 82
163 com.apple.AppKit 0x00007fff8875d2fa -[NSApplication run] + 636
164 QtGui 0x0000000119e8f5b0 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 840
165 QtCore 0x000000011abc4e88 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 394
166 QtCore 0x000000011abc815b QCoreApplication::exec() + 175
167 0x000000010eff26bb (anonymous namespace)::SlicerAppMain(int, char**) + 4155 (Main.cxx:292)
168 0x000000010eff1672 main + 34 (Main.cxx:324)
169 libdyld.dylib 0x00007fff8c9377e1 start + 1

fedorov

fedorov

2012-10-09 05:14

developer   ~0006446

I tested this after the previous change of Julien, and the test ran for me without crash including the scene close. Will update and test again.

fedorov

fedorov

2012-10-09 05:29

developer   ~0006448

Crash is reproducible outside ChangeTracker as follows:

1) download brain tumor 1 from sample data
2) create ROI
3) execfile the following script:

vrNode = slicer.modules.volumerendering.logic().CreateVolumeRenderingDisplayNode()
vrNode.SetReferenceCount(vrNode.GetReferenceCount()-1)
print(str(vrNode.GetReferenceCount()))
vs = slicer.mrmlScene.GetNodesByClass('vtkMRMLScalarVolumeNode')
v = vs.GetItemAsObject(0)

rs = slicer.mrmlScene.GetNodesByClass('vtkMRMLAnnotationROINode')
r = rs.GetItemAsObject(0)

vrLogic = slicer.modules.volumerendering.logic()
propNode = vrNode.GetVolumePropertyNode()

if propNode == None:
propNode = slicer.vtkMRMLVolumePropertyNode()
slicer.mrmlScene.AddNode(propNode)

vrNode.SetAndObserveVolumePropertyNodeID(propNode.GetID())
vrNode.SetAndObserveROINodeID(r.GetID())
vrNode.SetAndObserveVolumeNodeID(v.GetID())
vrLogic.CopyDisplayToVolumeRenderingDisplayNode(vrNode)
vrNode.VisibilityOn()
slicer.mrmlScene.AddNode(vrNode)

Julien: I tested this with r21138. I dereference the node, and add manually to the scene. Am I doing something incorrectly? Is this a VR issue?

finetjul

finetjul

2012-10-09 05:34

administrator   ~0006449

In that script the display node is not added into the displayable node. (see comment 0006442 in 0002621).
To decrement, I would prefer vrNode.UnRegister(slicer.modules.volumerendering.logic())

fedorov

fedorov

2012-10-09 05:38

developer   ~0006450

Ok, script updated as you suggested, but the crash is the same.

vrNode = slicer.modules.volumerendering.logic().CreateVolumeRenderingDisplayNode()
vrNode.UnRegister(slicer.modules.volumerendering.logic())

vrNode.SetReferenceCount(vrNode.GetReferenceCount()-1)

print(str(vrNode.GetReferenceCount()))
vs = slicer.mrmlScene.GetNodesByClass('vtkMRMLScalarVolumeNode')
v = vs.GetItemAsObject(0)

rs = slicer.mrmlScene.GetNodesByClass('vtkMRMLAnnotationROINode')
r = rs.GetItemAsObject(0)

vrLogic = slicer.modules.volumerendering.logic()
propNode = vrNode.GetVolumePropertyNode()

if propNode == None:
propNode = slicer.vtkMRMLVolumePropertyNode()
slicer.mrmlScene.AddNode(propNode)

vrNode.SetAndObserveVolumePropertyNodeID(propNode.GetID())
vrNode.SetAndObserveROINodeID(r.GetID())
vrNode.SetAndObserveVolumeNodeID(v.GetID())
v.AddAndObserveDisplayNodeID(vrNode.GetID())
vrLogic.CopyDisplayToVolumeRenderingDisplayNode(vrNode)
vrNode.VisibilityOn()
slicer.mrmlScene.AddNode(vrNode)

finetjul

finetjul

2012-10-09 06:02

administrator   ~0006452

Crash fixed in r21141

The root problem is that the vrNode is added in the scene after CopyDisplayToVolumeRenderingDisplayNode() . But CopyDisplayToVolumeRenderingDisplayNode() needs a pointer to the volume node v and vrNode can't return any reference pointers if it is not added to the scene first.

So I would suggest instead:
vrNode = slicer.modules.volumerendering.logic().CreateVolumeRenderingDisplayNode()
slicer.mrmlScene.AddNode(vrNode)
vrNode.UnRegister(slicer.modules.volumerendering.logic())
...
vrNode.VisibilityOn()

fedorov

fedorov

2012-10-09 06:14

developer   ~0006453

Julien, thanks, no crash anymore!

Now if I run this same script:

vrNode = slicer.modules.volumerendering.logic().CreateVolumeRenderingDisplayNode()
slicer.mrmlScene.AddNode(vrNode)
vrNode.UnRegister(slicer.modules.volumerendering.logic())

vrNode.SetReferenceCount(vrNode.GetReferenceCount()-1)

print(str(vrNode.GetReferenceCount()))
vs = slicer.mrmlScene.GetNodesByClass('vtkMRMLScalarVolumeNode')
v = vs.GetItemAsObject(0)

rs = slicer.mrmlScene.GetNodesByClass('vtkMRMLAnnotationROINode')
r = rs.GetItemAsObject(0)

vrLogic = slicer.modules.volumerendering.logic()
propNode = vrNode.GetVolumePropertyNode()

if propNode == None:
propNode = slicer.vtkMRMLVolumePropertyNode()
slicer.mrmlScene.AddNode(propNode)

vrNode.SetAndObserveVolumePropertyNodeID(propNode.GetID())
vrNode.SetAndObserveROINodeID(r.GetID())
vrNode.SetAndObserveVolumeNodeID(v.GetID())
v.AddAndObserveDisplayNodeID(vrNode.GetID())
vrLogic.CopyDisplayToVolumeRenderingDisplayNode(vrNode)
vrNode.VisibilityOn()

I have the following memory leaks, as you see display node is not deallocated:

Class "vtkCellData" has 9 instances still around.
Class "vtkCollection" has 2 instances still around.
Class "vtkInformationIntegerVectorValue" has 9 instances still around.
Class "vtkInformationVector" has 80 instances still around.
Class "vtkPerspectiveTransform" has 2 instances still around.
Class "vtkMRMLScalarVolumeNode" has 1 instance still around.
Class "vtkImageBimodalAnalysis" has 2 instances still around.
Class "vtkPointData" has 9 instances still around.
Class "vtkObservation" has 48 instances still around.
Class "vtkTrivialProducer" has 2 instances still around.
Class "vtkMatrix4x4" has 28 instances still around.
Class "vtkPassThrough" has 3 instances still around.
Class "vtkImageMapToColors" has 1 instance still around.
Class "vtkSimpleTransform" has 4 instances still around.
Class "vtkColorTransferFunction" has 1 instance still around.
Class "vtkObserverManager" has 14 instances still around.
Class "vtkIntArray" has 3 instances still around.
Class "vtkPoints" has 4 instances still around.
Class "vtkInformation" has 99 instances still around.
Class "vtkInformationStringVectorValue" has 2 instances still around.
Class "vtkLine" has 2 instances still around.
Class "vtkMultiThreader" has 10 instances still around.
Class "vtkInformationIntegerPointerValue" has 5 instances still around.
Class "vtkEventBroker" has 1 instance still around.
Class "vtkPolyData" has 4 instances still around.
Class "vtkLookupTable" has 1 instance still around.

---> Class "vtkMRMLCPURayCastVolumeRenderingDisplayNode" has 1 instance still around.

Class "vtkMRMLSliceNode" has 3 instances still around.
Class "vtkPiecewiseFunction" has 2 instances still around.
Class "vtkImageThreshold" has 1 instance still around.
Class "vtkMRMLAnnotationTextDisplayNode" has 1 instance still around.
Class "vtkOpenGLCamera" has 1 instance still around.
Class "vtkImageAccumulateDiscrete" has 2 instances still around.
Class "vtkIdList" has 3 instances still around.
Class "vtkDoubleArray" has 3 instances still around.
Class "vtkAlgorithmOutput" has 12 instances still around.
Class "vtkImageCast" has 1 instance still around.
Class "vtkMRMLColorTableNode" has 1 instance still around.
Class "vtkMRMLAnnotationROINode" has 1 instance still around.
Class "vtkInformationIntegerValue" has 115 instances still around.
Class "vtkExtentTranslator" has 1 instance still around.
Class "vtkTagTable" has 4 instances still around.
Class "vtkCellArray" has 2 instances still around.
Class "vtkImageData" has 5 instances still around.
Class "vtkMRMLAnnotationLineDisplayNode" has 1 instance still around.
Class "vtkFloatArray" has 2 instances still around.
Class "vtkMRMLScalarVolumeDisplayNode" has 1 instance still around.
Class "vtkInformationStringValue" has 7 instances still around.
Class "vtkVolumeProperty" has 1 instance still around.
Class "vtkStringArray" has 3 instances still around.
Class "vtkImageMapToWindowLevelColors" has 1 instance still around.
Class "vtkInformationExecutivePortVectorValue" has 11 instances still around.
Class "vtkTransform" has 3 instances still around.
Class "vtkIdTypeArray" has 2 instances still around.
Class "vtkShortArray" has 1 instance still around.
Class "vtkVoxel" has 1 instance still around.
Class "vtkFieldData" has 11 instances still around.
Class "vtkMRMLAnnotationPointDisplayNode" has 1 instance still around.
Class "vtkAssignAttribute" has 3 instances still around.
Class "vtkInformationDoubleVectorValue" has 7 instances still around.
Class "vtkMRMLCameraNode" has 1 instance still around.
Class "vtkMRMLVolumeArchetypeStorageNode" has 1 instance still around.
Class "vtkUnsignedCharArray" has 1 instance still around.
Class "vtkStreamingDemandDrivenPipeline" has 18 instances still around.
Class "vtkMRMLVolumePropertyNode" has 1 instance still around.
Class "vtkBitArray" has 4 instances still around.
Class "vtkImageAppendComponents" has 1 instance still around.
Class "vtkTimerLog" has 1 instance still around.
Class "vtkUnsignedLongArray" has 13 instances still around.
Class "vtkCommand or subclass" has 78 instances still around.
Class "vtkInformationExecutivePortValue" has 14 instances still around.
Class "vtkImageLogic" has 1 instance still around.

finetjul

finetjul

2012-10-09 06:18

administrator   ~0006455

The memory leak is a duplicate of 0002621
This is most likely because slicer.mrmlScene.GetNodesByClass is leaking (see 0002626)
Try de-referencing them.

fedorov

fedorov

2012-10-09 06:52

developer   ~0006459

No crash running RSNA quantitative test as of r21143

pieper

pieper

2012-10-30 12:23

administrator   ~0006933

From the hangout:

Julien Finet
4:18 PM
Found in ChangeTrackerDefineROIStep.py:
roi = slicer.mrmlScene.CreateNodeByClass('vtkMRMLAnnotationROINode')
slicer.mrmlScene.AddNode(roi)
parameterNode.SetParameter('roiNodeID', roi.GetID())
this is not the correct way to add ROI nodes (and it should leak)

Julien Finet
4:21 PM
Same problem in ChangeTrackerSelectScansStep.py when creating vtkMRMLLinearTransformNode

pieper

pieper

2012-10-30 12:27

administrator   ~0006934

Andrey - Can you try the changes that Julien suggested?

pieper

pieper

2012-10-30 12:30

administrator   ~0006936

Julien says you need to initialize the ROI node...

finetjul

finetjul

2012-10-30 12:36

administrator   ~0006939

The following should help:

roi = slicer.vtkMRMLAnnotationROINode()
roi.Initialize(scene)

(note that the ChangeTracker documentation is not up to date, it links to 4.0)

fedorov

fedorov

2012-10-30 15:30

developer   ~0006949

Which version are you looking at? CreateNodeByClass has been fixed a while ago, and Initialize() was added yesterday. References for GetNodesByClass are also decremented.

Current version of ChangeTrackerPy: https://github.com/fedorov/ChangeTrackerPy/commit/b4fa890c98e162ee51394a52f6577fc1a4eed7a5

Version in External_ChangeTracker: b4fa890c98e162ee51394a52f6577fc1a4eed7a5

http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/SuperBuild/External_ChangeTrackerPy.cmake?r1=21271&amp;r2=21274

which version of the code are you looking at?

finetjul

finetjul

2012-10-30 17:54

administrator   ~0006955

I was looking at 68b70e15ada3b46742ab3374a62e3eb02a5d101a, my bad.
Nonetheless, in b4fa890c98e162ee51394a52f6577fc1a4eed7a5, there are still some issues:
roi.Initialize(slicer.mrmlScene)
slicer.mrmlScene.AddNode(roi)

vtkMRMLAnnotationNode::Initialize adds the node into the scene, so you shouldn't have to add it again after.
This is the reason of the crash (scene model doesn't handle well when nodes are added twice into the scene).
Here was an example where I find asserts useful sometimes, vtkMRMLScene::AddNode was firing errors, however it was lost in the logs and nobody cared, an assert would have been more efficient :-)

fedorov

fedorov

2012-10-30 18:22

developer   ~0006957

fixed in r21291.

Would be great if there was a uniform way to add nodes to the scene.

FYI, I did not have any crashes (neither on my build, nor on nightly linux).

And why can't AddNode() be a no-op if the node is already in the scene.

finetjul

finetjul

2012-10-30 19:20

administrator   ~0006958

  • Uniform way to add nodes is tracked by 0002606, item j)
  • Crash didn't happen when running test RSNA2012Quant ? But at least errors where reported on the dashboard http://slicer.cdash.org/testDetails.php?test=3082872&amp;build=45528
  • Make "AddNode() a no-op if the node is already in the scene" would be costly and it would fix unlegitimate use case, a search in the entire scene would have to happen at each insertion. Or said differently, if nowhere node is added twice, a check on the scene would still happen at each insertion for no reason.
fedorov

fedorov

2012-10-31 04:20

developer   ~0006959

Re crash: my bad, I didn't check the dashboard! The test was not crashing on my machine.

About AddNode(): vtkMRMLNode keeps pointer to the scene, so can't we just check the pointers in AddNode to figure out if the node is in the scene in question or not?

finetjul

finetjul

2012-10-31 04:36

administrator   ~0006960

  • AddNode(): Currently vtkMRMLNode::SetScene() can be called by anyone, and in a lot of places it is called before adding the node into the scene. My dream is to make it protected and solely vtkMRMLScene can set it, then at that time, yes, it should be possible to check if the node has a valid scene.
fedorov

fedorov

2012-10-31 05:48

developer   ~0006963

Makes sense. Added issue 0002713 to keep track of this last point.

jcfr

jcfr

2012-10-31 11:38

administrator   ~0006986

Has this been resolved ? I would like to confidently resolve issue 0002517 and start the release process.

pieper

pieper

2012-10-31 11:51

administrator   ~0006988

No, not resolved. This still happens on my latest build:

http://slicer.cdash.org/testDetails.php?test=3084373&amp;build=45566

But since this is an assert, it only happens on debug builds and may not be an issue for the tutorials. I am testing a windows release build to see if it crashes at exit.

pieper

pieper

2012-10-31 11:54

administrator   ~0006989

I tested the windows release build and had no problems. Since this is the version that will be used for the training, I don't think this issue should be considered a roadblock (I would still like to see it resolved though).

jcfr

jcfr

2012-10-31 11:55

administrator   ~0006990

Last edited: 2012-10-31 11:56

Thanks for checking. Targeting for 4.2.1 and marking "Classroom Course 2" has resolved.

jcfr

jcfr

2012-11-06 10:00

administrator   ~0007079

Andriy> Are you working on resolving the root cause of the assert ?

fedorov

fedorov

2012-11-06 11:53

developer   ~0007085

JC> No, I didn't realize this was the expectation. Is the root cause of the assert in ChangeTracker module? I thought it is something in Annotations related to ROI initialization. I thought I did all the fixes that Julien suggested, so the ROI node should be initialized correctly.

Also, the test is passing on the nightly dashboard, since I think Steve mentioned it is reproducible only in Debug mode. Are we going to set up Debug dashboards to track this issue?

jcfr

jcfr

2012-11-06 14:23

administrator   ~0007089

The issue related to the tutorial has been closed. We are not addressing the "real" cause of the problem causing the issue which is also depicted by the title of the present issue "assert crash". Considering the fact the issue was assigned to you, I naturally asked for an update :)

Based on your feedback, re-assigning the issue seems to be the next things to do. That said, would you have time to investigate and try to fix the problem ?

There are currently no Debug dashboard, this is something we could do when the "factory-south" will be up and running.

fedorov

fedorov

2012-11-06 15:10

developer   ~0007090

JC, I can try, but would really rather spend my Slicer development time on Reporting module. And I really don't have time (as everyone else, of course). I was also wondering if it is wise for me to debug this, rather than some of the developers familiar with Annotations module.

I guess to start I will need to compile Slicer in Debug mode and check if I can reproduce the issue on my mac.

fedorov

fedorov

2012-11-06 15:12

developer   ~0007091

Also, looking at the issue history, it was originally assigned to Julien, then in note 0006933 reassigned to me based on Julien's feedback that I was not doing things correctly. I fixed the items Julien asked me to fix, but the issue never got reassigned to Julien.

jcfr

jcfr

2013-09-03 11:18

administrator   ~0009848

After building locally the ChangeTrackerPy module and adding the following paths to the list of "additional module paths" (Menu -> Edit -> App Settings -> Module ..):

/path/to/ChangeTrackerPy-build/lib/Slicer-4.2/cli-modules
/path/to/ChangeTrackerPy-build/lib/Slicer-4.2/qt-scripted-modules

Try to run the part3 of the "RSNA2012Quant" self test returned the following error:

unpacking to /tmp/__BundleLoadTemp2013-09-03_15+09+30.792
loaded /tmp/__BundleLoadTemp2013-09-03_15+09+30.792
"MRB Slicer Data Bundle" Reader has successfully read the file "/tmp/Slicer/RSNA2011_ChangeTracker_data.zip"
Finished with download and loading

Configure Module
Show module (name): "ChangeTracker"
Traceback (most recent call last):
File "/home/jchris/Projects/ChangeTrackerPy-build/lib/Slicer-4.2/qt-scripted-modules/ChangeTracker.py", line 55, in setup
workflowWidget.buttonBoxWidget().nextButtonDefaultText = ""
AttributeError: 'nextButtonDefaultText' does not exist on ctkWorkflowButtonBoxWidget and creating new attributes on C++ objects is not allowed
ChangeTracker: enter() called
Traceback (most recent call last):
File "/home/jchris/Projects/Slicer-AHM-Superbuild-Release/Slicer-build/lib/Slicer-4.2/qt-scripted-modules/RSNA2012Quant.py", line 526, in test_Part3ChangeTracker
changeTracker.selectScansStep._ChangeTrackerSelectScansStep__baselineVolumeSelector.setCurrentNode(baselineNode)
AttributeError: ChangeTrackerWidget instance has no attribute 'selectScansStep'
Test caused exception!
ChangeTrackerWidget instance has no attribute 'selectScansStep'

jcfr

jcfr

2013-09-03 11:19

administrator   ~0009849

Reminder sent to: fedorov

@fedorov: Would it be possible to fix the failing self tests (see note 9848), that away we could try to fix the crash for the 4.3.1 release. Thks

fedorov

fedorov

2013-09-03 11:25

developer   ~0009850

@jcfr: I was not aware of this, sorry. Looks like CTK API changed. I will look into this.

jcfr

jcfr

2013-09-03 11:33

administrator   ~0009852

@andriy: You not being aware aware of the problem can be explained by the fact the self test "RSNA2012Quant" (when run every night) checks locally for the availability of the ChangeTracker. Since the associated modules are not loaded, the self tests skips it.

Thanks for looking into this

fedorov

fedorov

2013-09-03 12:10

developer   ~0009856

@jcfr: well, even if the self-test was failing, I am not checking the dashboard regularly and would not notice...

Patched version: https://github.com/Slicer/ExtensionsIndex/pull/418

Note the self test does not crash, at least not on my Mac.

jcfr

jcfr

2013-10-04 00:47

administrator   ~0010130

Unable to reproduce running RSNA2012Quant test using Slicer r22597 built in Debug/64-bit on Ubuntu 13.04

jcfr

jcfr

2014-03-06 05:00

administrator   ~0010878

Closing resolved issues that have not been updated in more than 3 months

Issue History

Date Modified Username Field Change
2012-10-06 14:18 pieper New Issue
2012-10-06 14:18 pieper Status new => assigned
2012-10-06 14:18 pieper Assigned To => finetjul
2012-10-06 14:19 pieper Relationship added child of 0002517
2012-10-07 19:44 finetjul Relationship added related to 0002621
2012-10-07 20:08 finetjul Assigned To finetjul => fedorov
2012-10-07 20:09 finetjul Note Added: 0006429
2012-10-09 04:40 pieper Note Added: 0006444
2012-10-09 04:41 pieper Note Edited: 0006444
2012-10-09 05:14 fedorov Note Added: 0006446
2012-10-09 05:29 fedorov Note Added: 0006448
2012-10-09 05:29 fedorov Assigned To fedorov => finetjul
2012-10-09 05:34 finetjul Note Added: 0006449
2012-10-09 05:38 fedorov Note Added: 0006450
2012-10-09 06:02 finetjul Note Added: 0006452
2012-10-09 06:02 finetjul Status assigned => resolved
2012-10-09 06:02 finetjul Fixed in Version => Slicer 4.2.0 - coming release
2012-10-09 06:02 finetjul Resolution open => fixed
2012-10-09 06:14 fedorov Note Added: 0006453
2012-10-09 06:14 fedorov Status resolved => feedback
2012-10-09 06:14 fedorov Resolution fixed => reopened
2012-10-09 06:18 finetjul Note Added: 0006455
2012-10-09 06:52 fedorov Note Added: 0006459
2012-10-09 06:52 fedorov Status feedback => resolved
2012-10-09 06:52 fedorov Resolution reopened => fixed
2012-10-30 12:23 pieper Note Added: 0006933
2012-10-30 12:26 pieper Status resolved => assigned
2012-10-30 12:26 pieper Assigned To finetjul => fedorov
2012-10-30 12:27 pieper Note Added: 0006934
2012-10-30 12:27 pieper Status assigned => feedback
2012-10-30 12:30 pieper Note Added: 0006936
2012-10-30 12:36 finetjul Note Added: 0006939
2012-10-30 15:30 fedorov Note Added: 0006949
2012-10-30 17:54 finetjul Note Added: 0006955
2012-10-30 18:22 fedorov Note Added: 0006957
2012-10-30 19:20 finetjul Note Added: 0006958
2012-10-31 04:20 fedorov Note Added: 0006959
2012-10-31 04:36 finetjul Note Added: 0006960
2012-10-31 05:48 fedorov Note Added: 0006963
2012-10-31 05:49 fedorov Relationship added related to 0002713
2012-10-31 11:38 jcfr Note Added: 0006986
2012-10-31 11:51 pieper Note Added: 0006988
2012-10-31 11:54 pieper Note Added: 0006989
2012-10-31 11:55 jcfr Note Added: 0006990
2012-10-31 11:56 jcfr Note Edited: 0006990
2012-10-31 11:56 jcfr Target Version Slicer 4.2.0 - coming release => Slicer 4.2.1
2012-10-31 11:56 jcfr Additional Information Updated
2012-11-06 10:00 jcfr Note Added: 0007079
2012-11-06 11:53 fedorov Note Added: 0007085
2012-11-06 14:23 jcfr Note Added: 0007089
2012-11-06 15:10 fedorov Note Added: 0007090
2012-11-06 15:12 fedorov Note Added: 0007091
2012-11-07 04:51 jcfr Status feedback => assigned
2012-11-07 04:51 jcfr Assigned To fedorov => finetjul
2012-11-09 03:19 jcfr Assigned To finetjul => jcfr
2012-11-16 12:01 jcfr Target Version Slicer 4.2.1 => Slicer 4.2.2
2012-12-07 17:59 jcfr Target Version Slicer 4.2.2 => Slicer 4.2.3
2013-02-12 09:37 jcfr Target Version Slicer 4.2.3 => Slicer 4.3.0
2013-09-03 11:15 jcfr Target Version Slicer 4.3.0 => Slicer 4.3.1
2013-09-03 11:18 jcfr Note Added: 0009848
2013-09-03 11:18 jcfr Status assigned => feedback
2013-09-03 11:19 jcfr Note Added: 0009849
2013-09-03 11:25 fedorov Note Added: 0009850
2013-09-03 11:33 jcfr Note Added: 0009852
2013-09-03 12:10 fedorov Note Added: 0009856
2013-10-04 00:47 jcfr Note Added: 0010130
2013-10-04 00:47 jcfr Status feedback => resolved
2013-10-04 00:47 jcfr Resolution fixed => unable to reproduce
2013-10-04 00:49 jcfr Relationship added related to 0003432
2014-03-06 05:00 jcfr Note Added: 0010878
2014-03-06 05:01 jcfr Status resolved => closed