Crash on selecting point properties after using Surface Cut

Slicer built at 2946f735c6 with VTK8 on Arch Linux, with lldb version 12.0.0. gcc 11.1.0 is installed.

These patches are applied, else it won’t build with this gcc version:

diff --git a/Modules/Loadable/Segmentations/Logic/vtkImageGrowCutSegment.cxx b/Modules/Loadable/Segmentations/Logic/vtkImageGrowCutSegment.cxx
index b64a450bd..6996a3a58 100644
--- a/Modules/Loadable/Segmentations/Logic/vtkImageGrowCutSegment.cxx
+++ b/Modules/Loadable/Segmentations/Logic/vtkImageGrowCutSegment.cxx
@@ -13,6 +13,7 @@
 #include <vtkTimerLog.h>
 
 #include "FibHeap.h"
+#include <limits>
 
 vtkStandardNewMacro(vtkImageGrowCutSegment);
 
 
diff --git a/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageChangePhotometricInterpretation.h b/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageChangePhotometricInterpretation.h
index d55a5ee473..798d3dfa6a 100644
--- a/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageChangePhotometricInterpretation.h
+++ b/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageChangePhotometricInterpretation.h
@@ -16,6 +16,7 @@
 
 #include "gdcmImageToImageFilter.h"
 #include "gdcmPhotometricInterpretation.h"
+#include <limits>
 
 namespace gdcm
 {

Steps to reproduce :

Load CTA-cardio
Switch to Segment Editor
Select Surface Cut
Place a few points in the three usual slice views
Right click once to end point placement
Right click a second time at the same location to dismiss the slice view’s context menu
Move a few fiducial points
Right click on a fiducial point
Select Properties → crash

error: libstdc++.so.6 {0x00181389}: DIE has DW_AT_ranges(0x119c8) attribute, but range extraction failed (missing or invalid range list table), please file a bug and attach the file at the start of this error message
Process 286812 stopped
* thread #1, name = 'SlicerApp-real', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
    frame #0: 0x00007fffe10eebff libvtkCommon-8.2.so.1`vtkSubjectHelper::InvokeEvent(this=0x000055555db699e0, event=16100, callData=0x000055555e53d390, self=0x000055555c7c4900) at vtkObject.cxx:602:18
(lldb) bt
* thread #1, name = 'SlicerApp-real', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
  * frame #0: 0x00007fffe10eebff libvtkCommon-8.2.so.1`vtkSubjectHelper::InvokeEvent(this=0x000055555db699e0, event=16100, callData=0x000055555e53d390, self=0x000055555c7c4900) at vtkObject.cxx:602:18
    frame #1: 0x00007fff79ee0862 libvtkSlicerMarkupsModuleVTKWidgets.so`vtkSlicerMarkupsWidget::ProcessWidgetMenu(this=0x000055555e271f70, eventData=0x000055555e45d2e0) at vtkSlicerMarkupsWidget.cxx:659:23
    frame #2: 0x00007fff79f3d179 libvtkSlicerMarkupsModuleMRMLDisplayableManager.so`vtkMRMLMarkupsDisplayableManager::ProcessInteractionEvent(this=<unavailable>, eventData=0x000055555e45d2e0) at vtkMRMLMarkupsDisplayableManager.cxx:755:24
    frame #3: 0x00007fffed2b2489 libMRMLDisplayableManager.so`vtkMRMLViewInteractorStyle::DelegateInteractionEventDataToDisplayableManagers(this=0x00005555583a5e10, eventData=0x000055555e45d2e0) at vtkMRMLViewInteractorStyle.cxx:408:53
    frame #4: 0x00007fffed2b3213 libMRMLDisplayableManager.so`vtkMRMLSliceViewInteractorStyle::DelegateInteractionEventToDisplayableManagers(this=0x00005555583a5e10, inputEventData=0x000055555e735160) at vtkMRMLSliceViewInteractorStyle.cxx:148:23
    frame #5: 0x00007fffed2b20bc libMRMLDisplayableManager.so`vtkMRMLViewInteractorStyle::DelegateInteractionEventToDisplayableManagers(this=0x00005555583a5e10, event=<unavailable>) at vtkMRMLViewInteractorStyle.cxx:300:16
    frame #6: 0x00007fffe0f8f26c libvtkCommon-8.2.so.1`vtkCallbackCommand::Execute(this=0x00005555583a6820, caller=<unavailable>, event=<unavailable>, callData=<unavailable>) at vtkCallbackCommand.cxx:42:5
    frame #7: 0x00007fffe10eee3b libvtkCommon-8.2.so.1`vtkSubjectHelper::InvokeEvent(this=0x00005555583af750, event=19, callData=0x00007fffffffb9e0, self=0x00005555581c5b30) at vtkObject.cxx:616:26
    frame #8: 0x00007fffe4c0e9e1 libvtkGUISupportQt-8.2.so.1`QVTKInteractorAdapter::ProcessEvent(this=<unavailable>, e=<unavailable>, iren=<unavailable>) at QVTKInteractorAdapter.cxx:0
    frame #9: 0x00007ffff6e2f0be libQt5Widgets.so.5`QWidget::event(QEvent*) + 526
    frame #10: 0x00007ffff6debd62 libQt5Widgets.so.5`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 130
    frame #11: 0x00007ffff6df3ac9 libQt5Widgets.so.5`QApplication::notify(QObject*, QEvent*) + 2729
    frame #12: 0x00007ffff7c8fdfe libqSlicerBaseQTGUI.so`qSlicerApplication::notify(this=<unavailable>, receiver=<unavailable>, event=<unavailable>) at qSlicerApplication.cxx:411:26
    frame #13: 0x00007ffff631600a libQt5Core.so.5`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 314
    frame #14: 0x00007ffff6df257b libQt5Widgets.so.5`QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 443
    frame #15: 0x00007ffff6e48a84 libQt5Widgets.so.5`___lldb_unnamed_symbol921$$libQt5Widgets.so.5 + 740
    frame #16: 0x00007ffff6e4bdb5 libQt5Widgets.so.5`___lldb_unnamed_symbol932$$libQt5Widgets.so.5 + 517
    frame #17: 0x00007ffff6debd62 libQt5Widgets.so.5`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 130
    frame #18: 0x00007ffff7c8fdfe libqSlicerBaseQTGUI.so`qSlicerApplication::notify(this=<unavailable>, receiver=<unavailable>, event=<unavailable>) at qSlicerApplication.cxx:411:26
    frame #19: 0x00007ffff631600a libQt5Core.so.5`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 314
    frame #20: 0x00007ffff66ee210 libQt5Gui.so.5`QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 1712
    frame #21: 0x00007ffff66c37e5 libQt5Gui.so.5`QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 181
    frame #22: 0x00007fffce39efbc libQt5XcbQpa.so.5`___lldb_unnamed_symbol407$$libQt5XcbQpa.so.5 + 28
    frame #23: 0x00007fffdeed010c libglib-2.0.so.0`g_main_context_dispatch + 620
    frame #24: 0x00007fffdef23b99 libglib-2.0.so.0`___lldb_unnamed_symbol449$$libglib-2.0.so.0 + 521
    frame #25: 0x00007fffdeecd871 libglib-2.0.so.0`g_main_context_iteration + 49
    frame #26: 0x00007ffff636ec36 libQt5Core.so.5`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 102
    frame #27: 0x00007ffff631497c libQt5Core.so.5`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 300
    frame #28: 0x00007ffff631cee4 libQt5Core.so.5`QCoreApplication::exec() + 148
    frame #29: 0x00007ffff74e4226 libqSlicerBaseQTCore.so`qSlicerCoreApplication::exec() at qSlicerCoreApplication.cxx:861:19
    frame #30: 0x000055555555996c SlicerApp-real`main [inlined] (anonymous namespace)::SlicerAppMain(argc=1, argv=0x00007fffffffc238) at Main.cxx:62:10
    frame #31: 0x0000555555559781 SlicerApp-real`main(argc=<unavailable>, argv=0x00007fffffffc238) at qSlicerApplicationMainWrapper.cxx:56
    frame #32: 0x00007fffdf707b25 libc.so.6`__libc_start_main + 213
    frame #33: 0x000055555555968e SlicerApp-real`_start + 46
(lldb)

I hope it may help for a fix.

Regards.

Thanks for reporting this, I’ll fix it tomorrow.

A fix is implemented and under review. You can follow the progress here:

Thanks for the fix. However, a reproducible crash persists with Surface Cut :

Place some points
Apply
Edit
Right click on a point
Edit properties → crash

(The backtrace is posted as a screen capture because my console app has gone nuts, can’t copy)

Screenshot_20210625_113842

The right click management is OK now, no double action.

“Edit properties” option would indeed crash the application (because the effect deletes the temporary markup node while processing the event callbacks from that markup node), but the option is no longer visible on the context menu. What Slicer version do you use?

4.13.0-2021-06-24 r30000 / 2c3bbb7ddbd

which includes f9f11666e8.

Sometimes it shows the Markups module with an empty list, sometimes it crashes. But the menu item is always present.

I’ve forgot to push the corresponding change in SegmentEditorExtraEffects extension. It’ll work well in tomorrow’s Slicer Preview Release.

It’s OK now, the Edit Properties menu item no longer appears. Thanks.

1 Like