View Issue Details

IDProjectCategoryView StatusLast Update
0003807Slicer4Module LandmarkRegistrationpublic2018-03-02 11:06
Reportermatthieuheitz Assigned Topieper  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product VersionSlicer 4.3.1 
Target VersionSlicer 4.4.0Fixed in VersionSlicer 4.4.0 
Summary0003807: Crash when selecting "MRhead" and and "DTIVolume"
Description
  • Start Slicer
  • Download both Sample Datas : "MRHead" and "DTIVolume"
  • Select Module "Landmark Registration"
  • Choose MRHead as Fixed Volume, and DTIVolume as Moving Volume
  • Apply
    Slicer crashes.
Additional Information

If you swap the volumes in Fixed and Moving, Slicer doesn't crash.

Also crashes if you do the same thing except replace DTIVolume by DTIBrain.

TagsNo tags attached.

Activities

pieper

pieper

2014-08-18 11:35

administrator   ~0012391

Thanks for reporting - I can reproduce this. It's a problem with error handling.

pieper

pieper

2014-08-18 11:36

administrator   ~0012392

(lldb) bt

  • thread 0000026: tid = 0x2da4f35, 0x00007fff9421b866 libsystem_kernel.dylib__pthread_kill + 10, stop reason = signal SIGABRT frame #0: 0x00007fff9421b866 libsystem_kernel.dylib__pthread_kill + 10
    frame 0000001: 0x00007fff935c235c libsystem_pthread.dylibpthread_kill + 92 frame 0000002: 0x00007fff964c3b1a libsystem_c.dylibabort + 125
    frame 0000003: 0x00007fff8c6b2bee libsystem_malloc.dylibnanozone_error + 486 frame 0000004: 0x00007fff8c6b2db0 libsystem_malloc.dylib_nano_malloc_check_clear + 445
    frame 0000005: 0x00007fff8c6b16b0 libsystem_malloc.dylibnano_malloc + 35 frame 0000006: 0x00007fff8c6af868 libsystem_malloc.dylibmalloc_zone_malloc + 71
    frame 0000007: 0x00007fff8c6b027c libsystem_malloc.dylibmalloc + 42 frame 0000008: 0x0000000113d20392 QtCoreQString::QString(QChar const, int) + 66
    frame 0000009: 0x0000000113cfc438 QtCorequlltoa(unsigned long long, int, QChar) + 152 frame 0000010: 0x0000000113cf0734 QtCoreQLocalePrivate::unsLongLongToString(QChar, QChar, QChar, unsigned long long, int, int, int, unsigned int) + 68
    frame 0000011: 0x0000000113cf0a7b QtCoreQLocalePrivate::unsLongLongToString(unsigned long long, int, int, int, unsigned int) const + 59 frame 0000012: 0x0000000113d78775 QtCoreQTextStreamPrivate::putNumber(unsigned long long, bool) + 517
    frame 0000013: 0x0000000113d78911 QtCore`QTextStream::operator<<(void const
    ) + 81
    frame 0000014: 0x0000000104452246 libCTKCore.0.1.dylibctk::qtHandleToString(handle=0x000000016345f000) + 86 at ctkUtils.cpp:392 frame 0000015: 0x0000000103f9f545 libCTKVisualizationVTKCore.0.1.dylib(anonymous namespace)::ctkVTKOutputWindow::DisplayErrorText(this=0x00006280000948c0, text=0x00006400001dd5b0) + 181 at ctkVTKErrorLogMessageHandler.cpp:95
    frame 0000016: 0x000000011689502c libvtkCommon.5.10.dylib`vtkOutputWindowDisplayErrorText(message=0x00006400001dd5b0) + 44 at vtkOutputWindow.cxx:41
    • frame 0000017: 0x0000000115123897 libvtkImaging.5.10.dylibvtkImageLogic::ThreadedRequestData(this=0x0000628000319350, (null)=0x0000608000a62680, (null)=0x0000628000211fb0, (null)=0x0000628000e6ee00, inData=0x0000620000015950, outData=0x0000620000015670, outExt=0x000000016345ee90, id=7) + 5287 at vtkImageLogic.cxx:274 frame 0000018: 0x00000001163960db libvtkFiltering.5.10.dylibvtkThreadedImageAlgorithmThreadedExecute(arg=0x0000000119a85b18) + 763 at vtkThreadedImageAlgorithm.cxx:199
      frame 0000019: 0x00007fff935c1899 libsystem_pthread.dylib_pthread_body + 138 frame 0000020: 0x00007fff935c172a libsystem_pthread.dylib_pthread_start + 137
      (lldb)
pieper

pieper

2014-08-18 11:43

administrator   ~0012393

vtkOutputWindowDisplayErrorText is being called from inside a thread.

Here are the last few messages that are printed before the crash:

ERROR: In /Users/pieper/slicer4/latest/Slicer-superbuild/VTKv5/Imaging/vtkImageLogic.cxx, line 277
vtkImageLogic (0x628000319350): Execute: input1 NumberOfScalarComponents, 9, must match out input2 NumberOfScalarComponents 1

ERROR: In /Users/pieper/slicer4/latest/Slicer-superbuild/VTKv5/Imaging/vtkImageLogic.cxx, line 277
vtkImageLogic (0x628000319350): Execute: input1 NumberOfScalarComponents, 9, must match out input2 NumberOfScalarComponents 1

Execute: input1 NumberOfScalarComponents, 9, must match out input2 NumberOfScalarComponents 1

pieper

pieper

2014-08-18 11:46

administrator   ~0012394

Note that as a workaround you can do the inverse registration (make MRHead the moving volume).

pieper

pieper

2014-08-19 07:52

administrator   ~0012401

Problem was in the CloneVolume method not handling non-scalar volumes. Fixed in r23590.

Related Changesets

Import 2017-06-07 23:51:09: master 431b0a9c

2014-08-19 11:39:30

pieper

Details Diff
BUG: 0003807 fix crashes when cloning non-scalar volumes

Since nodes are strongly typed, it's important to get the right
subclass when making the copy. Unfortunately New is not virtual
and there's currently not a good way to make this code polymorphic.
We should investigate doing a sweeping change to MRML so that
the vtkStandardNewMacro is used appropriately but that is a bigger
change than is needed to fix this particular bug.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23590 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File

Issue History

Date Modified Username Field Change
2014-08-18 10:35 matthieuheitz New Issue
2014-08-18 10:35 matthieuheitz Status new => assigned
2014-08-18 10:35 matthieuheitz Assigned To => pieper
2014-08-18 11:35 pieper Note Added: 0012391
2014-08-18 11:35 pieper Status assigned => confirmed
2014-08-18 11:36 pieper Note Added: 0012392
2014-08-18 11:43 pieper Note Added: 0012393
2014-08-18 11:46 pieper Note Added: 0012394
2014-08-19 07:52 pieper Target Version => Slicer 4.4.0
2014-08-19 07:52 pieper Note Added: 0012401
2014-08-19 07:52 pieper Status confirmed => resolved
2014-08-19 07:52 pieper Fixed in Version => Slicer 4.4.0
2014-08-19 07:52 pieper Resolution open => fixed
2017-06-10 08:51 pieper Changeset attached => Slicer master 431b0a9c
2018-03-02 11:06 jcfr Status resolved => closed