View Issue Details

IDProjectCategoryView StatusLast Update
0002578Slicer4Core: GUIpublic2014-03-06 05:13
Reportersbillin Assigned Tofinetjul  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product VersionSlicer 4.1.1 
Target VersionSlicer 4.2.0Fixed in VersionSlicer 4.2.0 
Summary0002578: Transform Widget: Simultaneously transforming multiple nodes crashes Slicer
Description

The transform widget has a drop-down box called "Transformed Nodes" which allows selecting nodes from the "Transformable" category and moving them to the "Transformed" category. This works fine when selecting nodes one-by-one.

However, the GUI permits simultaneous selection of multiple nodes (using Shift+mouse click). When I select multiple nodes at the same time from "Transformable" and click the green arrow button to move them to "Transformed", then Slicer crashes.

Additional Information

Slicer Version:
4.1.0-2012-09-06 r20936

OS: Windows7 64bit with 32-bit compilation of Slicer

TagsNo tags attached.

Activities

pieper

pieper

2012-09-29 07:22

administrator   ~0006278

Here's the stack trace - the crash is in the Q_ASSERT below - probably the index changes during the loop so one should probably get the list of nodes before changing the transform node ids. (or turn off multi-select, but that would be a hack :)

#0 0x00007fff896c6212 in __pthread_kill ()
0000001 0x00007fff8763faf4 in pthread_kill ()
0000002 0x00007fff87683dce in abort ()
0000003 0x00000001195b6115 in qt_message_output(QtMsgType, char const) ()
0000004 0x00000001195b62cd in qt_message(QtMsgType, char const
, __va_list_tag) ()
0000005 0x00000001195b64ed in qFatal(char const
, ...) ()
0000006 0x00000001195b653a in qt_assert(char const, char const, int) ()
0000007 0x000000013323fa56 in qSlicerTransformsModuleWidget::transformSelectedNodes() at /Users/pieper/slicer4/latest/Slicer/Modules/Loadable/Transforms/qSlicerTransformsModuleWidget.cxx:255
0000008 0x000000013324511a in qSlicerTransformsModuleWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void) at /Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/Modules/Loadable/Transforms/moc_qSlicerTransformsModuleWidget.cxx:66
0000009 0x00000001196c7851 in QMetaObject::activate(QObject, QMetaObject const, int, void
) ()
0000010 0x0000000118fa23d1 in QAbstractButton::clicked(bool) ()
0000011 0x0000000118d1646e in QAbstractButtonPrivate::emitClicked() ()
0000012 0x0000000118d1718a in QAbstractButtonPrivate::click() ()
0000013 0x0000000118d1734c in QAbstractButton::mouseReleaseEvent(QMouseEvent) ()
0000014 0x0000000118dcfd52 in QToolButton::mouseReleaseEvent(QMouseEvent
) ()
0000015 0x0000000118a10542 in QWidget::event(QEvent) ()
0000016 0x0000000118d16436 in QAbstractButton::event(QEvent
) ()
0000017 0x0000000118dcf972 in QToolButton::event(QEvent) ()
0000018 0x00000001189c59a8 in QApplicationPrivate::notify_helper(QObject
, QEvent) ()
0000019 0x00000001189c62f8 in QApplication::notify(QObject
, QEvent) ()
0000020 0x00000001196b2a26 in QCoreApplication::notifyInternal(QObject
, QEvent) ()
0000021 0x00000001189cdf68 in QApplicationPrivate::sendMouseEvent(QWidget
, QMouseEvent, QWidget, QWidget*, QWidget*, QPointer<QWidget>&, bool) ()
0000022 0x000000011897d2b1 in qt_mac_handleMouseEvent(NSEvent
, QEvent::Type, Qt::MouseButton, QWidget*, bool) ()
0000023 0x00007fff842b86d6 in -[NSWindow sendEvent:] ()
0000024 0x0000000118974a32 in -[QCocoaWindow sendEvent:] ()
0000025 0x00007fff842b4744 in -[NSApplication sendEvent:] ()
0000026 0x0000000118978342 in -[QNSApplication sendEvent:] ()
0000027 0x00007fff841ca2fa in -[NSApplication run] ()
0000028 0x00000001189815b0 in QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
0000029 0x00000001196afe88 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
0000030 0x00000001196b315b in QCoreApplication::exec() ()
0000031 0x000000010db086bb in SlicerAppMain at /Users/pieper/slicer4/latest/Slicer/Applications/SlicerApp/Main.cxx:292
0000032 0x000000010db07672 in main at /Users/pieper/slicer4/latest/Slicer/Applications/SlicerApp/Main.cxx:324
0000033 0x00007fff863977e1 in start ()

//-----------------------------------------------------------------------------
void qSlicerTransformsModuleWidget::transformSelectedNodes()
{
Q_D(qSlicerTransformsModuleWidget);
QModelIndexList selectedIndexes =
d->TransformableTreeView->selectionModel()->selectedRows();
selectedIndexes = qMRMLTreeView::removeChildren(selectedIndexes);
foreach(QModelIndex selectedIndex, selectedIndexes)
{
vtkMRMLTransformableNode* node = vtkMRMLTransformableNode::SafeDownCast(
d->TransformableTreeView->sortFilterProxyModel()->
mrmlNodeFromIndex( selectedIndex ));
Q_ASSERT(node);
node->SetAndObserveTransformNodeID(d->MRMLTransformNode->GetID());
}
}

finetjul

finetjul

2012-09-29 18:54

administrator   ~0006283

Fixed in r21080:
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;revision=21080

jcfr

jcfr

2014-03-06 05:12

administrator   ~0011012

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

Issue History

Date Modified Username Field Change
2012-09-28 10:18 sbillin New Issue
2012-09-28 10:18 sbillin Status new => assigned
2012-09-28 10:18 sbillin Assigned To => kikinis
2012-09-29 07:22 pieper Note Added: 0006278
2012-09-29 07:22 pieper Assigned To kikinis => finetjul
2012-09-29 07:22 pieper Status assigned => confirmed
2012-09-29 18:54 finetjul Note Added: 0006283
2012-09-29 18:54 finetjul Status confirmed => resolved
2012-09-29 18:54 finetjul Fixed in Version => Slicer 4.2.0 - coming release
2012-09-29 18:54 finetjul Resolution open => fixed
2012-12-08 09:50 jcfr Target Version => Slicer 4.2.0
2014-03-06 05:12 jcfr Note Added: 0011012
2014-03-06 05:13 jcfr Status resolved => closed