View Issue Details

IDProjectCategoryView StatusLast Update
0002621Slicer4Module VolumeRenderingpublic2012-10-09 06:22
Reporterfedorov Assigned Tofinetjul  
PriorityhighSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.2.0Fixed in VersionSlicer 4.2.0 
Summary0002621: Switching to VR after manually creating display node causes crash
Description

When VR display nodes are created and initialized outside the VR module as in the attached script, switching to VR causes crash. Steps to reproduce:

1) go to any module that is not VR
2) load "MR Tumor volume 1" from Sample data
3) create a ROI
4) execute the attached script via execfile(<script location>)

crash stack:

Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 QtGui 0x0000000107017d88 QSortFilterProxyModelPrivate::proxy_to_source(QModelIndex const&) const + 376
1 QtGui 0x0000000107017fd5 QSortFilterProxyModel::mapToSource(QModelIndex const&) const + 21
2 QtGui 0x00000001070101c9 QSortFilterProxyModel::data(QModelIndex const&, int) const + 57
3 libqMRMLWidgets.dylib 0x00000001004e16f3 qMRMLNodeComboBoxPrivate::mrmlNodeFromIndex(QModelIndex const&) const + 67
4 libqMRMLWidgets.dylib 0x00000001004bb881 qMRMLCheckableNodeComboBox::checkedNodes() const + 209
5 libqMRMLWidgets.dylib 0x00000001004c6519 qMRMLDisplayNodeViewComboBox::checkedViewNodes() const + 41
6 ...enderingModuleWidgets.dylib 0x0000000127e0dfb4 qSlicerVolumeRenderingModuleWidgetPrivate::createVolumeRenderingDisplayNode(vtkMRMLVolumeNode) + 228
7 ...enderingModuleWidgets.dylib 0x0000000127e0e23f qSlicerVolumeRenderingModuleWidget::onCurrentMRMLVolumeNodeChanged(vtkMRMLNode
) + 239
8 ...enderingModuleWidgets.dylib 0x0000000127e171b5 qSlicerVolumeRenderingModuleWidget::qt_metacall(QMetaObject::Call, int, void) + 389
9 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
10 libqMRMLWidgets.dylib 0x000000010053bbee qMRMLNodeComboBox::currentNodeChanged(vtkMRMLNode*) + 46
11 libqMRMLWidgets.dylib 0x00000001004e20e8 qMRMLNodeComboBox::emitCurrentNodeChanged() + 72
12 libqMRMLWidgets.dylib 0x000000010053bffd qMRMLNodeComboBox::qt_metacall(QMetaObject::Call, int, void) + 893
13 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
14 QtGui 0x0000000106e457b9 QComboBox::currentIndexChanged(QString const&) + 41
15 QtGui 0x0000000106e471e9 QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) + 73
16 QtGui 0x0000000106e4b9de QComboBoxPrivate::setCurrentIndex(QModelIndex const&) + 254
17 QtGui 0x0000000106e4bc71 QComboBox::setCurrentIndex(int) + 97
18 QtGui 0x0000000106e4ecf4 QComboBox::qt_metacall(QMetaObject::Call, int, void) + 644
19 libCTKWidgets.0.1.dylib 0x0000000100f9dac5 ctkComboBox::qt_metacall(QMetaObject::Call, int, void
) + 37
20 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void) + 710
21 QtCore 0x00000001078620df QAbstractItemModel::rowsInserted(QModelIndex const&, int, int) + 63
22 QtCore 0x000000010781821b QAbstractItemModel::endInsertRows() + 171
23 QtGui 0x0000000107013449 QSortFilterProxyModelPrivate::insert_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) + 745
24 QtGui 0x0000000107014e28 QSortFilterProxyModelPrivate::source_items_inserted(QModelIndex const&, int, int, Qt::Orientation) + 872
25 QtGui 0x0000000107016867 QSortFilterProxyModelPrivate::_q_sourceRowsInserted(QModelIndex const&, int, int) + 23
26 QtGui 0x000000010701798e QSortFilterProxyModel::qt_metacall(QMetaObject::Call, int, void
) + 926
27 libqMRMLWidgets.dylib 0x000000010054010c qMRMLSortFilterProxyModel::qt_metacall(QMetaObject::Call, int, void) + 44
28 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
29 QtCore 0x00000001078620df QAbstractItemModel::rowsInserted(QModelIndex const&, int, int) + 63
30 QtCore 0x000000010781821b QAbstractItemModel::endInsertRows() + 171
31 QtGui 0x000000010702056a QStandardItemModelPrivate::rowsInserted(QStandardItem, int, int) + 58
32 QtGui 0x0000000107020775 QStandardItemPrivate::insertRows(int, int, QList<QStandardItem
> const&) + 421
33 libqMRMLWidgets.dylib 0x00000001004f1c47 qMRMLSceneModel::insertNode(vtkMRMLNode, QStandardItem, int) + 263
34 libqMRMLWidgets.dylib 0x00000001004f8969 qMRMLSceneModel::insertNode(vtkMRMLNode) + 601
35 libqMRMLWidgets.dylib 0x00000001004f3a8c qMRMLSceneModel::populateScene() + 92
36 libqMRMLWidgets.dylib 0x00000001004f8d2b qMRMLSceneModel::updateScene() + 859
37 libqMRMLWidgets.dylib 0x00000001004e4042 qMRMLNodeComboBox::setMRMLScene(vtkMRMLScene
) + 146
38 libqMRMLWidgets.dylib 0x000000010053c218 qMRMLNodeComboBox::qt_metacall(QMetaObject::Call, int, void) + 1432
39 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
40 libqSlicerBaseQTGUI.dylib 0x00000001003004ae qSlicerWidget::mrmlSceneChanged(vtkMRMLScene) + 46
41 libqSlicerBaseQTCore.dylib 0x00000001010f2921 qSlicerAbstractCoreModule::widgetRepresentation() + 129
42 libqSlicerBaseQTGUI.dylib 0x00000001002b8df6 qSlicerModulePanel::addModule(qSlicerAbstractCoreModule
) + 38
43 libqSlicerBaseQTGUI.dylib 0x00000001002b8644 qSlicerModulePanel::setModule(qSlicerAbstractCoreModule*) + 388
44 libqSlicerBaseQTGUI.dylib 0x00000001002feeb1 qSlicerModulePanel::qt_metacall(QMetaObject::Call, int, void) + 65
45 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
46 libqSlicerBaseQTGUI.dylib 0x00000001002fef86 qSlicerModuleSelectorToolBar::moduleSelected(QString const&) + 38
47 libqSlicerBaseQTGUI.dylib 0x00000001002bc89d qSlicerModuleSelectorToolBar::actionSelected(QAction*) + 1325
48 libqSlicerBaseQTGUI.dylib 0x00000001002ff130 qSlicerModuleSelectorToolBar::qt_metacall(QMetaObject::Call, int, void) + 272
49 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
50 libqSlicerBaseQTGUI.dylib 0x00000001002feb86 qSlicerModulesMenu::currentModuleChanged(QString const&) + 38
51 libqSlicerBaseQTGUI.dylib 0x00000001002b5706 qSlicerModulesMenu::actionSelected(QAction*) + 214
52 libqSlicerBaseQTGUI.dylib 0x00000001002fed81 qSlicerModulesMenu::qt_metacall(QMetaObject::Call, int, void) + 353
53 QtCore 0x00000001077379d6 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
54 QtGui 0x0000000106aaba11 QAction::triggered(bool) + 49
55 QtGui 0x0000000106aacda4 QAction::activate(QAction::ActionEvent) + 180
56 QtGui 0x0000000106eb5f20 QMenuPrivate::activateCausedStack(QList<QPointer<QWidget> > const&, QAction, QAction::ActionEvent, bool) + 352
57 QtGui 0x0000000106ebb5f4 QMenuPrivate::activateAction(QAction
, QAction::ActionEvent, bool) + 324
58 QtGui 0x0000000106b08970 QWidget::event(QEvent) + 2384
59 QtGui 0x0000000106ebb03b QMenu::event(QEvent
) + 107
60 QtGui 0x0000000106ab187d QApplicationPrivate::notify_helper(QObject, QEvent) + 189
61 QtGui 0x0000000106ab8040 QApplication::notify(QObject, QEvent) + 2416
62 QtCore 0x000000010773123c QCoreApplication::notifyInternal(QObject, QEvent) + 124
63 QtGui 0x0000000106ab0d7c qt_sendSpontaneousEvent(QObject, QEvent) + 44
64 QtGui 0x0000000106a6849d qt_mac_handleMouseEvent(void, void, QEvent::Type, Qt::MouseButton) + 2269
65 QtGui 0x0000000106a58be6 -[QCocoaView mouseUp:] + 22
66 com.apple.AppKit 0x00007fff82ece431 -[NSWindow sendEvent:] + 5547
67 QtGui 0x0000000106a56ce1 -[QCocoaPanel sendEvent:] + 241
68 com.apple.AppKit 0x00007fff82e03afa -[NSApplication sendEvent:] + 4719
69 QtGui 0x0000000106a6362a -[QNSApplication sendEvent:] + 74
70 com.apple.AppKit 0x00007fff82d9a6de -[NSApplication run] + 474
71 QtGui 0x0000000106a6d324 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1588
72 QtCore 0x000000010781bed4 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
73 QtCore 0x000000010781c1f4 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180
74 QtCore 0x000000010781d5aa QCoreApplication::exec() + 186
75 0x0000000100021048 main + 3016
76 0x000000010001ea68 start + 52

Additional Information

Python script to execute for reproducing the issue:

vrNode = slicer.modules.volumerendering.logic().CreateVolumeRenderingDisplayNode()
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)
slicer.mrmlScene.AddNode(vrNode)

TagsNo tags attached.

Relationships

parent of 0002623 feedbackfinetjul Change vtkMRMLVolumeRenderingDisplayableManager::DisplayNodes from map to vector 
parent of 0002628 acknowledgedfinetjul VR displayable manager should not show display node that are not referenced by displayable node 
related to 0002590 closedjcfr Tutorial 9 - Part3 - Switch module -> Closing slicer leads to crash 
related to 0002588 closedfedorov Tutorial 9 - Part3 - Memory leaks after closing scene and then slice 
related to 0002622 closedjcfr assert crash in scene model closing scene after change tracker 
related to 0002626 closedfinetjul Uniformize Get/New/Create/CreateAndAdd 
child of 0002589 closedfedorov Tutorial 9 - Part3 - Exiting and re-entering module does NOT re-display volume rendered tumor 
Not all the children of this issue are yet resolved or closed.

Activities

fedorov

fedorov

2012-10-06 08:42

developer   ~0006422

Also, if you don't switch to VR, but just try to quit Slicer, it hangs, and if I force quite, here's where it gets stuck:

Julien -- is there anything wrong with that VR DIsplay node initialization code that I use?

Thread 2835cc DispatchQueue 1
User stack:
9 start + 52 (in Slicer) [0x10001ea68]
9 main + 3044 (in Slicer) [0x100021064]
9 qSlicerAppMainWindow::~qSlicerAppMainWindow() + 433 (in libqSlicerApp.dylib) [0x10004e031]
9 QWidget::~QWidget() + 681 (in QtGui) [0x106b0b319]
9 QObjectPrivate::deleteChildren() + 95 (in QtCore) [0x1077362ef]
9 QWidget::~QWidget() + 681 (in QtGui) [0x106b0ae59]
9 QObjectPrivate::deleteChildren() + 95 (in QtCore) [0x1077362ef]
9 QFrame::~QFrame() + 41 (in QtGui) [0x106e76cb9]
9 QWidget::~QWidget() + 681 (in QtGui) [0x106b0b319]
9 QObjectPrivate::deleteChildren() + 95 (in QtCore) [0x1077362ef]
9 qMRMLThreeDWidget::~qMRMLThreeDWidget() + 75 (in libqMRMLWidgets.dylib) [0x100523acb]
9 QWidget::~QWidget() + 681 (in QtGui) [0x106b0b319]
9 QObjectPrivate::deleteChildren() + 95 (in QtCore) [0x1077362ef]
9 qMRMLThreeDView::~qMRMLThreeDView() + 58 (in libqMRMLWidgets.dylib) [0x10051d8ea]
9 qMRMLThreeDViewPrivate::~qMRMLThreeDViewPrivate() + 48 (in libqMRMLWidgets.dylib) [0x10051d390]
9 vtkMRMLDisplayableManagerGroup::~vtkMRMLDisplayableManagerGroup() + 101 (in libMRMLDisplayableManager.dylib) [0x103132465]
9 vtkMRMLVolumeRenderingDisplayableManager::~vtkMRMLVolumeRenderingDisplayableManager() + 69 (in libvtkSlicerVolumeRenderingModuleMRMLDisplayableManager.dylib) [0x12b7efd25]
5 vtkMRMLVolumeRenderingDisplayableManager::RemoveDisplayNode(vtkMRMLVolumeRenderingDisplayNode) + 53 (in libvtkSlicerVolumeRenderingModuleMRMLDisplayableManager.dylib) [0x12b7ef8e5]
4 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const
, std::allocator<char> const&) + 67 (in libstdc++.6.dylib) [0x7fff8415055f]
3 char std::string::_S_construct<char const>(char const, char const, std::allocator<char> const&, std::forward_iterator_tag) + 69 (in libstdc++.6.dylib) [0x7fff8415017d]
1 std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) + 131 (in libstdc++.6.dylib) [0x7fff8414e4db]
1 std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) + 142 (in libstdc++.6.dylib) [0x7fff8414e4e6]
1 std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) + 121 (in libstdc++.6.dylib) [0x7fff8414e4d1]
1 operator new(unsigned long) + 97 (in libstdc++.6.dylib) [0x7fff84168f05]
1 malloc + 39 (in libSystem.B.dylib) [0x7fff8788dc83]
1 std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) + 148 (in libstdc++.6.dylib) [0x7fff8414e4ec]
1 strlen + 29 (in libSystem.B.dylib) [0x7fff8788ec0d]
3 vtkMRMLVolumeRenderingDisplayableManager::RemoveDisplayNode(vtkMRMLVolumeRenderingDisplayNode) + 591 (in libvtkSlicerVolumeRenderingModuleMRMLDisplayableManager.dylib) [0x12b7efaff]
2 free + 56 (in libSystem.B.dylib) [0x7fff8789214d]
1 szone_size + 215 (in libSystem.B.dylib) [0x7fff878922fe]
1 szone_size + 388 (in libSystem.B.dylib) [0x7fff878923ab]
1 __spin_lock + 13 (in commpage [libSystem.B.dylib]) [0x7fffffe0026d]
1 vtkMRMLVolumeRenderingDisplayableManager::RemoveDisplayNode(vtkMRMLVolumeRenderingDisplayNode
) + 574 (in libvtkSlicerVolumeRenderingModuleMRMLDisplayableManager.dylib) [0x12b7efaee]

finetjul

finetjul

2012-10-07 19:39

administrator   ~0006428

Crash is fixed in r21118:
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;revision=21128

For the hang, the problem comes from your code:
You shouldn't call the last line "slicer.mrmlScene.AddNode(vrNode)".
As it is mentioned in the comment of vtkSlicerVolumeRenderingLogic::CreateVolumeRenderingDisplayNode(), the returned node is already added into the scene. (see
http://slicer.org/doc/html/classvtkSlicerVolumeRenderingLogic.html#a3ee5dc9a38aa9503b9494cc1d0789ec0)
Adding an existing node twice into the scene shouldn't be allowed and it leads to problems such as the hang. I just created an issue to fix the hang in the code, however, I would prefer to do it after 4.2 if it is not urgent (it's only a hang because something illegal happened).
In order to reduce the confusion in the future,

  • r21129 warns the developer that the node already exist, however I'm hesitant to add the check "IsNodePresent" in release mode as it would slow down node insertion. The more I think about it the more I think we should add it though.
  • do you think the name of the function CreateVolumeRenderingDisplayNode() was misleading ? From the name you wouldn't expect the node from being added into the scene ? Feel free to create a new issue that would require the issue developer to make a pass in the code of Slicer to make sure all the functions that are named "CreateXXX" return a node that is not added into the scene. Note that it would have the drawback that you would need to manually "dereference" it in your python or C++ code (because the returned node has an "artificial" reference count of 1)
fedorov

fedorov

2012-10-08 05:33

developer   ~0006430

Julien, I admit I didn't read the code or doxygen. The same code was there last year, and I don't remember this issue come up.

From my perspective, it is not clear from the "CreateNode" name that the node would be added to the scene. I would call it something like "CreateAndAdd". To me the use of "CreateNode" is ambiguous, since there are other similar calls (e.g., MRMLScene:CreateNodeByClass()) that create but do not add the node to the scene.

Now, back to the issue:

1) if I run the script and then switch to VT, volume rendering visibility is toggled. Is this expected behavior? I would think not, because I set visibility on display node.

2) if I run the script (excluding the AddNode line), switch to VR and quit Slicer, I have the following memory leaks. If I don't switch to VR and exit, no leaks.

Class "vtkCellData" has 10 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 4 instances still around.
Class "vtkMRMLScalarVolumeNode" has 1 instance still around.
Class "vtkImageBimodalAnalysis" has 2 instances still around.
Class "vtkPointData" has 10 instances still around.
Class "vtkObservation" has 50 instances still around.
Class "vtkTrivialProducer" has 2 instances still around.
Class "vtkMatrix4x4" has 56 instances still around.
Class "vtkPassThrough" has 3 instances still around.
Class "vtkImageMapToColors" has 1 instance still around.
Class "vtkSimpleTransform" has 8 instances still around.
Class "vtkColorTransferFunction" has 1 instance still around.
Class "vtkObserverManager" has 19 instances still around.
Class "vtkIntArray" has 3 instances still around.
Class "vtkPoints" has 5 instances still around.
Class "vtkInformation" has 100 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 5 instances still around.
Class "vtkLookupTable" has 1 instance still around.
Class "vtkMRMLCPURayCastVolumeRenderingDisplayNode" has 1 instance still around.
Class "vtkMRMLSliceNode" has 6 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 2 instances 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 2 instances still around.
Class "vtkInformationIntegerValue" has 119 instances still around.
Class "vtkExtentTranslator" has 1 instance still around.
Class "vtkTagTable" has 5 instances still around.
Class "vtkCellArray" has 3 instances still around.
Class "vtkImageData" has 5 instances still around.
Class "vtkMRMLAnnotationLineDisplayNode" has 1 instance still around.
Class "vtkFloatArray" has 3 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 4 instances still around.
Class "vtkImageMapToWindowLevelColors" has 1 instance still around.
Class "vtkInformationExecutivePortVectorValue" has 11 instances still around.
Class "vtkTransform" has 6 instances still around.
Class "vtkIdTypeArray" has 3 instances still around.
Class "vtkShortArray" has 1 instance still around.
Class "vtkVoxel" has 1 instance still around.
Class "vtkFieldData" has 12 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 2 instances 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 8 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 96 instances still around.
Class "vtkInformationExecutivePortValue" has 14 instances still around.
Class "vtkImageLogic" has 1 instance still around.

finetjul

finetjul

2012-10-08 21:27

administrator   ~0006442

0) "CreateXXX": See issue 0002626
1) When you open VR, it creates a new VR display node because the current volume doesn't have a VR display node. And by default, the created VR display node is not visible.
You need to add in your script:
v.AddAndObserveDisplayNodeID(vrNode.GetID())
2) I get memory leaks even if I don't open the VR module.

fedorov

fedorov

2012-10-09 06:22

developer   ~0006456

You are absolutely correct. The irony is, I just fixed this in another place before you updated this, but missed right in front of my face in this test!

Issue History

Date Modified Username Field Change
2012-10-06 08:33 fedorov New Issue
2012-10-06 08:33 fedorov Status new => assigned
2012-10-06 08:33 fedorov Assigned To => finetjul
2012-10-06 08:33 fedorov Relationship added child of 0002589
2012-10-06 08:42 fedorov Note Added: 0006422
2012-10-06 08:44 fedorov Relationship added related to 0002590
2012-10-06 08:44 fedorov Relationship added related to 0002588
2012-10-07 05:46 pieper Target Version => Slicer 4.2.0 - coming release
2012-10-07 18:06 finetjul Relationship added parent of 0002623
2012-10-07 19:39 finetjul Note Added: 0006428
2012-10-07 19:39 finetjul Status assigned => resolved
2012-10-07 19:39 finetjul Fixed in Version => Slicer 4.2.0 - coming release
2012-10-07 19:39 finetjul Resolution open => fixed
2012-10-07 19:44 finetjul Relationship added related to 0002622
2012-10-08 05:33 fedorov Note Added: 0006430
2012-10-08 05:33 fedorov Status resolved => feedback
2012-10-08 05:33 fedorov Resolution fixed => reopened
2012-10-08 08:39 finetjul Relationship added related to 0002626
2012-10-08 21:12 finetjul Relationship added parent of 0002628
2012-10-08 21:27 finetjul Note Added: 0006442
2012-10-09 06:22 fedorov Note Added: 0006456
2012-10-09 06:22 fedorov Status feedback => closed
2012-10-09 06:22 fedorov Resolution reopened => fixed