View Issue Details

IDProjectCategoryView StatusLast Update
0003917Slicer4Module Transformspublic2017-06-10 01:24
ReporterpieperAssigned Tolassoan 
PrioritynormalSeveritycrashReproducibilityhave not tried
Status resolvedResolutionunable to reproduce 
Product VersionSlicer 4.4.0 
Target VersionFixed in Version 
Summary0003917: crash on scene close when transform is visible
Description

See Summary.

Steps To Reproduce

I had a scene open with a couple volumes and a transform visible in grid mode. Closing the scene led to the crash (stack trace attached).

Additional Information

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libqSlicerTransformsModuleWidgets.dylib 0x000000012386fc37 qMRMLTransformDisplayNodeWidget::setGlyphSpacingMm(double) + 23
1 libqSlicerTransformsModuleWidgets.dylib 0x0000000123879161 qMRMLTransformDisplayNodeWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 209
2 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
3 libCTKWidgets.0.1.dylib 0x00000001028903ee ctkSliderWidget::valueChanged(double) + 62
4 libCTKWidgets.0.1.dylib 0x000000010285d34e ctkSliderWidget::setDecimals(int) + 94
5 libqMRMLWidgets.dylib 0x00000001005f86e5 qMRMLSliderWidget::updateWidgetFromUnitNode() + 197
6 libqMRMLWidgets.dylib 0x0000000100622b5a qMRMLSliderWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 90
7 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
8 libCTKVisualizationVTKCore.0.1.dylib 0x0000000103186776 ctkVTKConnection::emitExecute(vtkObject, void, unsigned long, void) + 102
9 libCTKVisualizationVTKCore.0.1.dylib 0x000000010317ebe6 ctkVTKConnectionPrivate::execute(vtkObject
, unsigned long, void, void) + 134
10 libvtkCommon-6.2.1.dylib 0x000000010c47e321 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
11 libMRMLCore.dylib 0x0000000104be7b09 vtkEventBroker::InvokeObservation(vtkObservation, unsigned long, void) + 169
12 libMRMLCore.dylib 0x0000000104be76df vtkEventBroker::ProcessEvent(vtkObservation, vtkObject, unsigned long, void) + 111
13 libvtkCommon-6.2.1.dylib 0x000000010c47e321 vtkCallbackCommand::Execute(vtkObject
, unsigned long, void) + 33
14 libvtkCommon-6.2.1.dylib 0x000000010c56b07e vtkSubjectHelper::InvokeEvent(unsigned long, void
, vtkObject) + 1134
15 libMRMLCore.dylib 0x0000000104cf1207 vtkMRMLSelectionNode::SetUnitNodeID(char const
, char const) + 215
16 libvtkSlicerUnitsModuleLogic.dylib 0x0000000122ee2bd9 vtkSlicerUnitsLogic::SetDefaultUnit(char const
, char const) + 105
17 libqSlicerUnitsModule.dylib 0x000000012797e036 qSlicerUnitsSettingsPanel::onNodeIDChanged(QString const&) + 150
18 libqSlicerUnitsModule.dylib 0x000000012797efe5 qSlicerUnitsSettingsPanel::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 101
19 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
20 libqMRMLWidgets.dylib 0x000000010061e498 qMRMLNodeComboBox::currentNodeIDChanged(QString const&) + 56
21 libqMRMLWidgets.dylib 0x00000001005c3dec qMRMLNodeComboBox::emitCurrentNodeChanged() + 172
22 libqMRMLWidgets.dylib 0x000000010061e23b qMRMLNodeComboBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 731
23 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
24 QtGui 0x00000001094747b8 QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) + 136
25 QtGui 0x0000000109479558 QComboBoxPrivate::setCurrentIndex(QModelIndex const&) + 744
26 QtGui 0x000000010947809e QComboBox::setCurrentIndex(int) + 94
27 libqMRMLWidgets.dylib 0x00000001005c4794 qMRMLNodeComboBox::setCurrentNodeID(QString const&) + 1044
28 libqMRMLWidgets.dylib 0x00000001005c3833 qMRMLNodeComboBox::setCurrentNode(vtkMRMLNode) + 67
29 libqMRMLWidgets.dylib 0x00000001005c3e2c qMRMLNodeComboBox::emitCurrentNodeChanged() + 236
30 libqMRMLWidgets.dylib 0x000000010061e23b qMRMLNodeComboBox::qt_static_metacall(QObject
, QMetaObject::Call, int, void) + 731
31 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
32 QtGui 0x00000001094747b8 QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) + 136
33 QtGui 0x0000000109479558 QComboBoxPrivate::setCurrentIndex(QModelIndex const&) + 744
34 QtGui 0x0000000109478276 QComboBoxPrivate::_q_rowsRemoved(QModelIndex const&, int, int) + 374
35 QtGui 0x000000010947dd3b QComboBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 827
36 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
37 QtCore 0x0000000109f4802f QAbstractItemModel::rowsRemoved(QModelIndex const&, int, int) + 63
38 QtCore 0x0000000109ee1164 QAbstractItemModel::endRemoveRows() + 84
39 QtGui 0x0000000109627d35 QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) + 261
40 QtGui 0x0000000109627b82 QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) + 338
41 QtGui 0x0000000109629863 QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) + 451
42 QtGui 0x000000010962e4f3 QSortFilterProxyModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void) + 771
43 QtCore 0x0000000109f002ae QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2030
44 QtCore 0x0000000109f47fdf QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) + 63
45 QtCore 0x0000000109ee10e9 QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) + 105
46 QtGui 0x0000000109637431 QStandardItem::removeRows(int, int) + 177
47 libqMRMLWidgets.dylib 0x00000001005d6357 qMRMLSceneModel::updateScene() + 2055
48 libvtkCommon-6.2.1.dylib 0x000000010c47e321 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
49 libvtkCommon-6.2.1.dylib 0x000000010c56b07e vtkSubjectHelper::InvokeEvent(unsigned long, void, vtkObject) + 1134
50 libMRMLCore.dylib 0x0000000104cd60e3 vtkMRMLScene::Clear(int) + 659
51 libqSlicerApp.dylib 0x000000010007a558 qSlicerAppMainWindow::qt_metacall(QMetaObject::Call, int, void) + 56
52 QtCore 0x0000000109f004d3 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 2579
53 QtGui 0x0000000109111887 QAction::activate(QAction::ActionEvent) + 151
54 QtGui 0x00000001090c71f4 -[QCocoaMenuLoader qtDispatcherToQAction:] + 68
55 com.apple.AppKit 0x00007fff8a786260 -[NSApplication sendAction:to:from:] + 327
56 com.apple.AppKit 0x00007fff8a7a11c8 -[NSMenuItem _corePerformAction] + 394
57 com.apple.AppKit 0x00007fff8a7a0f04 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 117
58 com.apple.AppKit 0x00007fff8a7a007c -[NSMenu performKeyEquivalent:] + 289
59 com.apple.AppKit 0x00007fff8a79c8e1 -[NSApplication _handleKeyEquivalent:] + 822
60 com.apple.AppKit 0x00007fff8a70bacc -[NSApplication sendEvent:] + 3293
61 QtGui 0x00000001090c7662 -[QNSApplication sendEvent:] + 82
62 com.apple.AppKit 0x00007fff8a55b9f9 -[NSApplication run] + 646
63 QtGui 0x00000001090d01a2 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 994
64 QtCore 0x0000000109ee7157 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 487
65 QtCore 0x0000000109eea1de QCoreApplication::exec() + 206
66 0x000000010002d766 main + 6646
67 0x000000010002bd64 start + 52

TagsNo tags attached.

Relationships

related to 0004141 closedlassoan Close scene crashes after Resample Scalar/Vector/DWI Volume 
related to 0004081 assignedjcfr Ensure reference are updated before NodeAddedEvent is invoked 

Activities

lassoan

lassoan

2014-12-10 16:15

developer   ~0012784

Probably the crash is caused by reference to deleted object, which might be fixed by using a WeakPointer for observed nodes. We have many crashes on scene close due to widgets observing nodes. Probably we would need to implement a common 'node reference' mechanism between a widget and a MRML node (similarly to the mechanism that is added for 'node reference' between MRML nodes) and make it very robust. Currently there are a few patterns that are used throughout different widgets and probably most of them crashes when nodes are deleted.

Units module also have to be fixed, as the qSlicerUnitsSettingsPanel must not trigger random valueChanged events during scene shutdown.

Is the crash reproducible?

pieper

pieper

2016-03-01 10:19

administrator   ~0013830

This may be fixed now that 4141 is fixed.

lassoan

lassoan

2017-06-10 01:24

developer   ~0014728

It works correctly in Slicer 4.7.0-2017-06-02

Issue History

Date Modified Username Field Change
2014-12-10 15:27 pieper New Issue
2014-12-10 15:27 pieper Status new => assigned
2014-12-10 15:27 pieper Assigned To => lassoan
2014-12-10 16:15 lassoan Note Added: 0012784
2015-11-12 15:13 jcfr Relationship added related to 0004081
2016-03-01 10:19 pieper Relationship added related to 0004141
2016-03-01 10:19 pieper Note Added: 0013830
2016-03-01 10:19 pieper Status assigned => feedback
2017-06-10 01:24 lassoan Status feedback => resolved
2017-06-10 01:24 lassoan Resolution open => unable to reproduce
2017-06-10 01:24 lassoan Note Added: 0014728