View Issue Details

IDProjectCategoryView StatusLast Update
0003913Slicer4Module BRAINSpublic2015-11-30 17:41
Reportertokuda Assigned Tohjmjohnson  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product VersionSlicer 4.4.0 
Target VersionFixed in VersionSlicer 4.5.0-1 
Summary0003913: General Registration (BRAINS) Crash
Description

I tried deformable registration of prostate image with General Registration (BRAINS) module, but the Slicer crashed a few seconds after I clicked “Apply” button. Here’s what I did:

  • Launch Slicer 4.4.0 on Mac OS X (Yosemite)

  • Load RegLib_C07.mrb downloaded from http://www.slicer.org/slicerWiki/index.php/Documentation/4.3/Registration/RegistrationLibrary

  • Draw masks for “Day01_axis" and “Day42_axis" using Editor tool. Named them “Day01_axis-label” and “Day42_axis-label” respectively.
    ( I uploaded the scene with my mask data at: https://dl.dropboxusercontent.com/u/2168813/RegLib_C07_with_mask.mrb )

  • Open General Registration (BRAINS) and set parameters as follows:

    • Fixed Image Volume: “Day01_axis"
    • Moving Image Volume: “Day42_axis"
    • Output Image Volume: Create new volume
    • Initialize Transform Mode: useCenterOfROIAlign
    • Registration Phases: Check Rigid (6 DOF), Rigid+Scale (7 DOF), Rigid+Scale+Skew(10 DOF), Affine (12 DOF), BSpline (>27 DOF)
    • B-Spline Grid Size: 5, 5, 5
    • Masking Option: ROI
    • (ROI)Masking input fixed: “Day01_axis-label”
    • (ROI)Masking input moving: “Day42_axis-label”
  • Click “Apply” button.

And then the Slicer suddenly crashed. When I followed exactly the same steps with older version of Slicer (I used one downloaded on June 13, 2014), the registration worked well and I got a reasonable result.

TagsNo tags attached.

Activities

pieper

pieper

2014-12-05 14:10

administrator   ~0012779

I was able to get a crash using the Slicer 4.4 release. I'll attach a screenshot of the stacktrace.

It dies in:

itk::ImageToImageMetricv4<itk::Image<float, 3u>, itk::Image<float, 3u>, itk::Image<float, 3u>, double, itk::DefaultImageToImageMetricTraitsv4<itk::Image<float, 3u>, itk::Image<float, 3u>, itk::Image<float, 3u>, double> >::SetMovingImageMask(itk::SpatialObject<3u> const*)

2014-12-05 14:10

 

crash.png (389,812 bytes)
crash.png (389,812 bytes)
pieper

pieper

2014-12-15 12:16

administrator   ~0012788

I tested again with a debug build and got basically the same stack trace but with some extra detail.

Here's the code it dies on:

if ( m_Pointer ) { m_Pointer->Register(); }

so m_Pointer is nonzero, but corrupt.

(lldb) bt

  • thread 0000003: tid = 0xcbe0a, 0x00000001339ad141 libBRAINSFitLib.dylib`itk::SmartPointer<itk::SpatialObject<3u> const>::Register(this=0x0000000125874d18) + 49 at itkSmartPointer.h:164, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    • frame #0: 0x00000001339ad141 libBRAINSFitLib.dylibitk::SmartPointer&lt;itk::SpatialObject&lt;3u> const>::Register(this=0x0000000125874d18) + 49 at itkSmartPointer.h:164 frame 0000001: 0x0000000133c8f0a3 libBRAINSFitLib.dylibitk::SmartPointer<itk::SpatialObject<3u> const>::SmartPointer(this=0x0000000125874d18, p=0x00007ffca743b580) + 35 at itkSmartPointer.h:70
      frame 0000002: 0x000000013396561d libBRAINSFitLib.dylibitk::SmartPointer&lt;itk::SpatialObject&lt;3u> const>::SmartPointer(this=0x0000000125874d18, p=0x00007ffca743b580) + 29 at itkSmartPointer.h:70 frame 0000003: 0x0000000133b1eb08 libBRAINSFitLib.dylibitk::SmartPointer<itk::SpatialObject<3u> const>::operator=(this=0x00007ffca727a038, r=0x00007ffca743b580) + 40 at itkSmartPointer.h:130
      frame 0000004: 0x0000000133bc40de libBRAINSFitLib.dylibitk::ImageToImageMetricv4&lt;itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, double, itk::DefaultImageToImageMetricTraitsv4&lt;itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, double> >::SetMovingImageMask(this=0x00007ffca7279ed0, _arg=0x00007ffca743b580) + 2030 at itkImageToImageMetricv4.h:380 frame 0000005: 0x00000001339920c6 libBRAINSFitLib.dylibitk::BRAINSFitHelperTemplate<itk::Image<float, 3u>, itk::Image<float, 3u> >::Update(this=0x00007ffcb4d9a2b0) + 42166 at BRAINSFitHelperTemplate.hxx:1420
      frame 0000006: 0x0000000133968707 libBRAINSFitLib.dylibvoid itk::BRAINSFitHelper::RunRegistration&lt;itk::MattesMutualInformationImageToImageMetricv4&lt;itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, double, itk::DefaultImageToImageMetricTraitsv4&lt;itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, itk::Image&lt;float, 3u>, double> > >(this=0x00007ffcb4bdbcd0) + 391 at BRAINSFitHelper.h:446 frame 0000007: 0x00000001339603b4 libBRAINSFitLib.dylibitk::BRAINSFitHelper::Update(this=0x00007ffcb4bdbcd0) + 8228 at BRAINSFitHelper.cxx:323
      frame 0000008: 0x0000000133572474 libBRAINSFitLib.dylibModuleEntryPoint(argc=94, argv=0x00007ffca6fc08b0) + 189076 at BRAINSFit.cxx:485 frame 0000009: 0x0000000105559216 libqSlicerBaseQTCLI.dylibvtkSlicerCLIModuleLogic::ApplyTask(this=0x00007ffcbb834f50, clientdata=0x00007ffcbb2f0ad0) + 116102 at vtkSlicerCLIModuleLogic.cxx:2100
      frame 0000010: 0x0000000108875def libSlicerBaseLogic.dylibvtkSlicerTask::Execute(this=0x00007ffcb4b644e0) + 175 at vtkSlicerTask.cxx:36 frame 0000011: 0x000000010883c9d1 libSlicerBaseLogic.dylibvtkSlicerApplicationLogic::ProcessProcessingTasks(this=0x00007ffcb4f4c980) + 705 at vtkSlicerApplicationLogic.cxx:462
      frame 0000012: 0x000000010883c19e libSlicerBaseLogic.dylibvtkSlicerApplicationLogic::ProcessingThreaderCallback(arg=0x00007ffcb9832890) + 78 at vtkSlicerApplicationLogic.cxx:420 frame 0000013: 0x00007fff8981f2fc libsystem_pthread.dylib_pthread_body + 131
      frame 0000014: 0x00007fff8981f279 libsystem_pthread.dylib_pthread_start + 176 frame 0000015: 0x00007fff8981d4b1 libsystem_pthread.dylibthread_start + 13
tokuda

tokuda

2015-01-07 05:43

developer   ~0012844

CLI options:

slicer:0x120fa6bf0 --processinformationaddress 0x135253890 --fixedVolume slicer:0x10e2a72b0#vtkMRMLScalarVolumeNode2 --movingVolume slicer:0x10e2a72b0#vtkMRMLScalarVolumeNode6 --outputVolume slicer:0x10e2a72b0#vtkMRMLScalarVolumeNode5 --initializeTransformMode useCenterOfROIAlign --samplingPercentage 0.002 --useRigid --useScaleVersor3D --useScaleSkewVersor3D --useAffine --useBSpline --splineGridSize 5,5,5 --numberOfIterations 1500 --maskProcessingMode ROI --fixedBinaryVolume slicer:0x10e2a72b0#vtkMRMLScalarVolumeNode1 --movingBinaryVolume slicer:0x10e2a72b0#vtkMRMLScalarVolumeNode3 --outputVolumePixelType float --backgroundFillValue 0 --maskInferiorCutOffFromCenter 1000 --interpolationMode Linear --minimumStepLength 0.001 --translationScale 1000 --reproportionScale 1 --skewScale 1 --maxBSplineDisplacement 0 --numberOfHistogramBins 50 --numberOfMatchPoints 10 --numberOfSamples 0 --fixedVolumeTimeIndex 0 --movingVolumeTimeIndex 0 --medianFilterSize 0,0,0 --removeIntensityOutliers 0 --useCachingOfBSplineWeightsMode ON --useExplicitPDFDerivativesMode AUTO --ROIAutoDilateSize 0 --ROIAutoClosingSize 9 --relaxationFactor 0.5 --maximumStepLength 0.05 --failureExitCode -1 --numberOfThreads -1 --forceMINumberOfThreads -1 --debugLevel 0 --costFunctionConvergenceFactor 2e+13 --projectedGradientTolerance 1e-05 --maximumNumberOfEvaluations 900 --maximumNumberOfCorrections 25 --metricSamplingStrategy Random --costMetric MMI --metricSeed 21474836

pieper

pieper

2015-01-07 05:50

administrator   ~0012845

This one crashes for me:

0000004 Slicer-build $ ./lib/Slicer-4.4/cli-modules/BRAINSFit --fixedVolume ~/data/3913-brainsfit-crash/Day01_axial.nrrd --movingVolume ~/data/3913-brainsfit-crash/Day42_axial.nrrd --outputVolume /tmp/out.nrrd --initializeTransformMode useCenterOfROIAlign --samplingPercentage 0.002 --useRigid --useScaleVersor3D --useScaleSkewVersor3D --useAffine --useBSpline --splineGridSize 5,5,5 --numberOfIterations 1500 --maskProcessingMode ROI --fixedBinaryVolume ~/data/3913-brainsfit-crash/Day01_axial-label.nrrd --movingBinaryVolume ~/data/3913-brainsfit-crash/Day42_axial-label.nrrd --outputVolumePixelType float --backgroundFillValue 0 --maskInferiorCutOffFromCenter 1000 --interpolationMode Linear --minimumStepLength 0.001 --translationScale 1000 --reproportionScale 1 --skewScale 1 --maxBSplineDisplacement 0 --numberOfHistogramBins 50 --numberOfMatchPoints 10 --numberOfSamples 0 --fixedVolumeTimeIndex 0 --movingVolumeTimeIndex 0 --medianFilterSize 0,0,0 --removeIntensityOutliers 0 --useCachingOfBSplineWeightsMode ON --useExplicitPDFDerivativesMode AUTO --ROIAutoDilateSize 0 --ROIAutoClosingSize 9 --relaxationFactor 0.5 --maximumStepLength 0.05 --failureExitCode -1 --numberOfThreads -1 --forceMINumberOfThreads -1 --debugLevel 0 --costFunctionConvergenceFactor 2e+13 --projectedGradientTolerance 1e-05 --maximumNumberOfEvaluations 900 --maximumNumberOfCorrections 25 --metricSamplingStrategy Random --costMetric MMI --metricSeed 21474836

pieper

pieper

2015-01-07 06:06

administrator   ~0012847

Here's an easier way to replicate. You can use this with the attached 3913-brainsfit-crash.tar.gz file and just update your data path.

datadir=~/data/3913-brainsfit-crash

./lib/Slicer-4.4/cli-modules/BRAINSFit \
--fixedVolume ${datadir}/Day01_axial.nrrd \
--movingVolume ${datadir}/Day42_axial.nrrd \
--outputVolume /tmp/out.nrrd \
--initializeTransformMode useCenterOfROIAlign \
--samplingPercentage 0.002 \
--useRigid \
--useScaleVersor3D \
--useScaleSkewVersor3D \
--useAffine \
--useBSpline \
--splineGridSize 5,5,5 \
--numberOfIterations 1500 \
--maskProcessingMode ROI \
--fixedBinaryVolume ${datadir}/Day01_axial-label.nrrd \
--movingBinaryVolume ${datadir}/Day42_axial-label.nrrd \
--outputVolumePixelType float \
--backgroundFillValue 0 \
--maskInferiorCutOffFromCenter 1000 \
--interpolationMode Linear \
--minimumStepLength 0.001 \
--translationScale 1000 \
--reproportionScale 1 \
--skewScale 1 \
--maxBSplineDisplacement 0 \
--numberOfHistogramBins 50 \
--numberOfMatchPoints 10 \
--numberOfSamples 0 \
--fixedVolumeTimeIndex 0 \
--movingVolumeTimeIndex 0 \
--medianFilterSize 0,0,0 \
--removeIntensityOutliers 0 \
--useCachingOfBSplineWeightsMode ON \
--useExplicitPDFDerivativesMode AUTO \
--ROIAutoDilateSize 0 \
--ROIAutoClosingSize 9 \
--relaxationFactor 0.5 \
--maximumStepLength 0.05 \
--failureExitCode -1 \
--numberOfThreads -1 \
--forceMINumberOfThreads -1 \
--debugLevel 0 \
--costFunctionConvergenceFactor 2e+13 \
--projectedGradientTolerance 1e-05 \
--maximumNumberOfEvaluations 900 \
--maximumNumberOfCorrections 25 \
--metricSamplingStrategy Random \
--costMetric MMI \
--metricSeed 21474836

2015-01-07 06:07

 

3913-brainsfit-crash.tar.gz (4,156,204 bytes)
hjmjohnson

hjmjohnson

2015-01-09 07:59

developer   ~0012874

Once BRAINSTools was updated to recent version, Bradley Lowekamp confirmed that this issue was resolved.

Issue History

Date Modified Username Field Change
2014-12-05 10:12 tokuda New Issue
2014-12-05 10:12 tokuda Status new => assigned
2014-12-05 10:12 tokuda Assigned To => hjmjohnson
2014-12-05 14:10 pieper Note Added: 0012779
2014-12-05 14:10 pieper Status assigned => confirmed
2014-12-05 14:10 pieper File Added: crash.png
2014-12-15 12:16 pieper Note Added: 0012788
2015-01-07 05:43 tokuda Note Added: 0012844
2015-01-07 05:50 pieper Note Added: 0012845
2015-01-07 06:06 pieper Note Added: 0012847
2015-01-07 06:07 pieper File Added: 3913-brainsfit-crash.tar.gz
2015-01-09 07:59 hjmjohnson Note Added: 0012874
2015-01-09 07:59 hjmjohnson Status confirmed => resolved
2015-01-09 07:59 hjmjohnson Fixed in Version => Slicer 4.5.0-1
2015-01-09 07:59 hjmjohnson Resolution open => fixed
2015-06-21 13:51 tokuda Status resolved => closed
2015-11-30 17:41 jcfr Category Module BRAINSFit => Module BRAINS