View Issue Details

IDProjectCategoryView StatusLast Update
0002101Slicer4Core: GUIpublic2014-03-06 05:23
Reporteralexy Assigned Tofinetjul  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product VersionSlicer 4.1.0 
Target VersionSlicer 4.3.0Fixed in VersionSlicer 4.3.0 
Summary0002101: switching beteween modules takes long time
Description

rons examples, 2012-04-...preparedfor lecture, load scene with name beginning with 3...
restore the sceneview called parcellated tracts.
go to tractogaphy display. It takes several minutes on Win7 in debug mode.

The root cause seems to in the code below that emits mrmlSceneChanged that is process by many other modules.

void qSlicerWidget::setMRMLScene(vtkMRMLScene* scene)
{
bool emitSignal = this->mrmlScene() != scene;
this->qSlicerObject::setMRMLScene(scene);
if (emitSignal)
{
emit mrmlSceneChanged(scene);
}
}
Here is paused stack trace.

ntdll.dll!778b27a0()    
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!778ea5fb()    
ntdll.dll!779156d5()    
ntdll.dll!778f29fa()    
ntdll.dll!77893492()    
kernel32.dll!76f314dd()     
msvcr90d.dll!_free_base(void * pBlock=0x459fa210)  Line 109 + 0x13 bytes    C
msvcr90d.dll!_free_dbg_nolock(void * pUserData=0x459fa230, int nBlockUse=1)  Line 1426 + 0x9 bytes  C++
msvcr90d.dll!_free_dbg(void * pUserData=0x459fa230, int nBlockUse=1)  Line 1258 + 0xd bytes C++
msvcr90d.dll!free(void * pUserData=0x459fa230)  Line 49 + 0xb bytes C++
QtCored4.dll!qFree(void * ptr=0x459fa230)  Line 60 + 0xa bytes  C++
QtCored4.dll!QString::free(QString::Data * d=0x459fa230)  Line 1151 + 0x9 bytes C++
QtCored4.dll!QString::~QString()  Line 882 + 0x23 bytes C++
CTKVisualizationVTKCore.dll!ctkVTKConnection::isEqual(vtkObject * vtk_obj=0x3bae9798, unsigned long vtk_event=16001, const QObject * qt_obj=0x354e4bf0, QString qt_slot={...})  Line 313 + 0x16 bytes   C++
CTKVisualizationVTKCore.dll!ctkVTKObjectEventsObserverPrivate::findConnection(vtkObject * vtk_obj=0x3bae9798, unsigned long vtk_event=16001, const QObject * qt_obj=0x354e4bf0, const char * qt_slot=0x5b613650)  Line 137 + 0x33 bytes C++
CTKVisualizationVTKCore.dll!ctkVTKObjectEventsObserver::containsConnection(vtkObject * vtk_obj=0x3bae9798, unsigned long vtk_event=16001, const QObject * qt_obj=0x354e4bf0, const char * qt_slot=0x5b613650)  Line 399 + 0x18 bytes    C++
CTKVisualizationVTKCore.dll!ctkVTKObjectEventsObserver::addConnection(vtkObject * vtk_obj=0x3bae9798, unsigned long vtk_event=16001, const QObject * qt_obj=0x354e4bf0, const char * qt_slot=0x5b613650, float priority=0.00000000, Qt::ConnectionType connectionType=AutoConnection)  Line 292 + 0x18 bytes    C++
qMRMLWidgets.dll!qMRMLSceneModel::qvtkConnect(vtkObject * vtk_obj=0x3bae9798, unsigned long vtk_event=16001, const QObject * qt_obj=0x354e4bf0, const char * qt_slot=0x5b613650, float priority=0.00000000, Qt::ConnectionType connectionType=AutoConnection)  Line 58 + 0x4c bytes C++
qMRMLWidgets.dll!qMRMLSceneModel::insertNode(vtkMRMLNode * node=0x3bae9798, QStandardItem * parent=0x45bb23b0, int row=226)  Line 780 + 0x39 bytes  C++
qMRMLWidgets.dll!qMRMLSceneModel::insertNode(vtkMRMLNode * node=0x3bae9798)  Line 747 + 0x1e bytes  C++
qMRMLWidgets.dll!qMRMLSceneModel::populateScene()  Line 711 + 0x16 bytes    C++
qMRMLWidgets.dll!qMRMLSceneModel::updateScene()  Line 696 + 0x12 bytes  C++
qMRMLWidgets.dll!qMRMLSceneModel::setMRMLScene(vtkMRMLScene * scene=0x05cf2f58)  Line 364 + 0x12 bytes  C++
qMRMLWidgets.dll!qMRMLNodeComboBox::setMRMLScene(vtkMRMLScene * scene=0x05cf2f58)  Line 572 + 0x1c bytes    C++
qMRMLWidgets.dll!qMRMLNodeComboBox::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=7, void * * _a=0x00bfc06c)  Line 163 + 0x1b bytes    C++
QtCored4.dll!QMetaObject::metacall(QObject * object=0x354e4908, QMetaObject::Call cl=InvokeMetaMethod, int idx=34, void * * argv=0x00bfc06c)  Line 238  C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x354e3538, const QMetaObject * m=0x5b9a02b8, int local_signal_index=0, void * * argv=0x00bfc06c)  Line 3272 + 0x27 bytes   C++
qSlicerBaseQTGUI.dll!qSlicerWidget::mrmlSceneChanged(vtkMRMLScene * _t1=0x05cf2f58)  Line 91 + 0x17 bytes   C++
qSlicerBaseQTGUI.dll!qSlicerWidget::setMRMLScene(vtkMRMLScene * scene=0x05cf2f58)  Line 60  C++
qSlicerBaseQTGUI.dll!qSlicerWidget::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=1, void * * _a=0x00bfc1bc)  Line 79 + 0x30 bytes C++
qSlicerTractographyDisplayModuleWidgets.dll!qSlicerTractographyEditorROIWidget::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=28, void * * _a=0x00bfc1bc)  Line 86 + 0x17 bytes    C++
QtCored4.dll!QMetaObject::metacall(QObject * object=0x354e3538, QMetaObject::Call cl=InvokeMetaMethod, int idx=28, void * * argv=0x00bfc1bc)  Line 238  C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x34c37e50, const QMetaObject * m=0x5b9a02b8, int local_signal_index=0, void * * argv=0x00bfc1bc)  Line 3272 + 0x27 bytes   C++
qSlicerBaseQTGUI.dll!qSlicerWidget::mrmlSceneChanged(vtkMRMLScene * _t1=0x05cf2f58)  Line 91 + 0x17 bytes   C++

qSlicerBaseQTGUI.dll!qSlicerWidget::setMRMLScene(vtkMRMLScene scene=0x05cf2f58) Line 60 C++
qSlicerBaseQTCore.dll!qSlicerAbstractCoreModule::widgetRepresentation() Line 230 + 0x39 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModulePanel::addModule(qSlicerAbstractCoreModule
module=0x27fdbf08) Line 137 + 0x17 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModulePanel::setModule(qSlicerAbstractCoreModule module=0x27fdbf08) Line 123 + 0x16 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModulePanel::setModule(const QString & moduleName={...}) Line 101 C++
qSlicerBaseQTGUI.dll!qSlicerModulePanel::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=0, void
_a=0x00bfc53c) Line 76 C++
QtCored4.dll!QMetaObject::metacall(QObject
object=0x280869d0, QMetaObject::Call cl=InvokeMetaMethod, int idx=31, void argv=0x00bfc53c) Line 238 C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x280da460, const QMetaObject m=0x5b9a01f4, int local_signal_index=0, void argv=0x00bfc53c) Line 3272 + 0x27 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModuleSelectorToolBar::moduleSelected(const QString & _t1={...}) Line 106 + 0x17 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModuleSelectorToolBar::actionSelected(QAction action=0x34a411e8) Line 317 + 0xf2 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModuleSelectorToolBar::onModuleSelected(const QString & name={...}) Line 252 C++
qSlicerBaseQTGUI.dll!qSlicerModuleSelectorToolBar::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=6, void
_a=0x00bfc754) Line 93 + 0xf bytes C++
QtCored4.dll!QMetaObject::metacall(QObject
object=0x280da460, QMetaObject::Call cl=InvokeMetaMethod, int idx=46, void argv=0x00bfc754) Line 238 C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x280e3200, const QMetaObject m=0x5b9a01e0, int local_signal_index=0, void argv=0x00bfc754) Line 3272 + 0x27 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModulesMenu::currentModuleChanged(const QString & _t1={...}) Line 146 + 0x17 bytes C++
qSlicerBaseQTGUI.dll!qSlicerModulesMenu::actionSelected(QAction action=0x34a411e8) Line 484 C++
qSlicerBaseQTGUI.dll!qSlicerModulesMenu::onActionTriggered() Line 471 C++
qSlicerBaseQTGUI.dll!qSlicerModulesMenu::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=5, void
_a=0x00bfc918) Line 102 + 0x8 bytes C++
QtCored4.dll!QMetaObject::metacall(QObject
object=0x280e3200, QMetaObject::Call cl=InvokeMetaMethod, int idx=43, void argv=0x00bfc918) Line 238 C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x34a411e8, const QMetaObject m=0x01f1f798, int local_signal_index=1, void argv=0x00bfc918) Line 3272 + 0x27 bytes C++
QtGuid4.dll!QAction::triggered(bool _t1=false) Line 263 + 0x15 bytes C++
QtGuid4.dll!QAction::activate(QAction::ActionEvent event=Trigger) Line 1258 C++
QtGuid4.dll!QMenuPrivate::activateCausedStack(const QList<QPointer<QWidget> > & causedStack={...}, QAction action=0x34a411e8, QAction::ActionEvent action_e=Trigger, bool self=true) Line 995 C++
QtGuid4.dll!QMenuPrivate::activateAction(QAction
action=0x34a411e8, QAction::ActionEvent action_e=Trigger, bool self=true) Line 1088 C++
QtGuid4.dll!QMenu::mouseReleaseEvent(QMouseEvent e=0x00bfd368) Line 2302 C++
QtGuid4.dll!QWidget::event(QEvent
event=0x00bfd368) Line 8188 C++
QtGuid4.dll!QMenu::event(QEvent e=0x00bfd368) Line 2411 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject
receiver=0x280f52d8, QEvent e=0x00bfd368) Line 4396 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject
receiver=0x280f52d8, QEvent e=0x00bfd368) Line 3959 + 0x2f bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject
receiver=0x280f52d8, QEvent event=0x00bfd368) Line 732 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject
receiver=0x280f52d8, QEvent event=0x00bfd368) Line 218 + 0x38 bytes C++
QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget
receiver=0x280f52d8, QMouseEvent event=0x00bfd368, QWidget alienWidget=0x00000000, QWidget nativeWidget=0x280f52d8, QWidget buttonDown=0x01f2106c, QPointer<QWidget> & lastMouseReceiver={...}, bool spontaneous=true) Line 3056 + 0xe bytes C++
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Line 3230 + 0x2a bytes C++
QtGuid4.dll!QtWndProc(HWND__
hwnd=0x001d1190, unsigned int message=514, unsigned int wParam=0, long lParam=31326564) Line 1657 + 0xc bytes C++
user32.dll!769862fa()
user32.dll!76986d3a()
user32.dll!76986ce9()
user32.dll!769877c4()
user32.dll!7698788a()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 806 C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 1170 + 0x15 bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 150 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 201 + 0x2d bytes C++
QtCored4.dll!QCoreApplication::exec() Line 1009 + 0x15 bytes C++
QtGuid4.dll!QApplication::exec() Line 3673 C++
SlicerApp-real.exe!`anonymous namespace'::SlicerAppMain(int argc=1, char argv=0x05ccf6d0) Line 311 + 0x8 bytes C++
SlicerApp-real.exe!main(int argc=1, char argv=0x05ccf6d0) Line 343 + 0xd bytes C++
SlicerApp-real.exe!__tmainCRTStartup() Line 582 + 0x19 bytes C
SlicerApp-real.exe!mainCRTStartup() Line 399 C
kernel32.dll!76f3339a()
ntdll.dll!77899ef2()
ntdll.dll!77899ec5()

TagsNo tags attached.

Activities

finetjul

finetjul

2012-05-22 11:00

administrator   ~0004550

in 3-2012-04-27-aDemo-PeritumoralTractParcellation.mrml, there is no "parcellated tracts" scene view.
Can't reproduce the long delay.

alexy

alexy

2012-05-22 11:21

developer   ~0004551

the view is called Parcelated Fibers. Sorry copied from Ron's report of different issue.

finetjul

finetjul

2012-05-22 11:27

administrator   ~0004552

With "Parcellated Fibers", it's lightning fast (no more than 1 second) on my Visual Studio 2008 in Debug mode.
Btw, the scene view images are missing.

millerjv

millerjv

2012-05-22 11:55

developer   ~0004554

I also cannot reproduce the long delay. It takes about 6 seconds to restore the scene view on my system with the View Controllers modules visible.

alexy

alexy

2012-05-22 12:03

developer   ~0004555

The long time takes not on scene view restore but switching to tractography display modules

finetjul

finetjul

2012-05-22 15:20

administrator   ~0004569

yes, my test (<=1s) was to open the tractography display modules.
You can turn off some options in Visual Studio to not debug STL methods, that would speed-up the debugging.

jcfr

jcfr

2013-07-31 20:44

administrator   ~0009322

Resolving issues that have not been updated in more than 6 months. Please re-open if this is still a problem.

jcfr

jcfr

2014-03-06 05:21

administrator   ~0011150

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

Issue History

Date Modified Username Field Change
2012-05-22 05:31 alexy New Issue
2012-05-22 05:32 alexy Assigned To => finetjul
2012-05-22 05:32 alexy Status new => assigned
2012-05-22 05:42 jcfr Target Version => Slicer 4.2.0 AHM Summer 2012
2012-05-22 07:04 finetjul Target Version Slicer 4.2.0 AHM Summer 2012 =>
2012-05-22 11:00 finetjul Note Added: 0004550
2012-05-22 11:00 finetjul Status assigned => feedback
2012-05-22 11:21 alexy Note Added: 0004551
2012-05-22 11:27 finetjul Note Added: 0004552
2012-05-22 11:55 millerjv Note Added: 0004554
2012-05-22 12:03 alexy Note Added: 0004555
2012-05-22 15:20 finetjul Note Added: 0004569
2012-08-22 05:56 jcfr Target Version => Slicer 4.3.0
2013-07-31 20:44 jcfr Note Added: 0009322
2013-07-31 20:44 jcfr Status feedback => resolved
2013-07-31 20:44 jcfr Fixed in Version => Slicer 4.3.0
2013-07-31 20:44 jcfr Resolution open => fixed
2014-03-06 05:21 jcfr Note Added: 0011150
2014-03-06 05:23 jcfr Status resolved => closed