View Issue Details

IDProjectCategoryView StatusLast Update
0003108Slicer4Extension: (Any extensions)public2015-11-30 17:34
Reportertokuda Assigned ToLchauvin  
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionfixed 
Product VersionSlicer 4.2.2-1 
Target VersionSlicer 4.4.0Fixed in VersionSlicer 4.4.0 
Summary0003108: Slicer crashes when the VolumeResliceDriver and VisuaLine are used together
Description

Slicer crashes when the VolumeResliceDriver and VisuaLine are used together. I could reproduce the crash by the following operation:

  1. Load sample data
  2. Open PathPlanner and define a pair of target and entry points.
  3. Create a path using the PathPlanner.
  4. Open VisuaLine and slide "VisualOffset" to positive value
  5. Open VolumeResliceDriver and select "AnnotationRuler_1" created by VisuaLine.
  6. Go back to VisuaLine and move the "Visual Offset" slider to zero.
  7. Slicer crashes.

I'm still not sure this is due to any bug in VisuaLine, VolumeResliceDriver or Annotation.

TagsNo tags attached.

Activities

tokuda

tokuda

2013-05-08 12:45

developer   ~0008579

The crash was fixed in the latest VolumeResliceDriver:

https://github.com/SlicerIGT/VolumeResliceDriver/commit/aa55ded8bd9a56f431fde117dfe9412f79f6c3c6

It was due to division by zero. When VolumeResliceDriver calculates a normal vector for volume reslicing, it uses a vector that connects two points of the annotation ruler. When the length of the ruler becomes zero (by step 6 described above), the previous code tried to calculate a normal vector by dividing a vector (0, 0, 0) by 0.

Although the crash can be avoided by using arbitrary vector e.g. (1, 0, 0), such an arbitrary vector cause a change of reslicing plane, when the Visual Offset becomes zero.

Lchauvin

Lchauvin

2013-05-08 12:47

developer   ~0008580

I think I fixed the issue by adding:

if (!sliceNode)
{
return;
}

to the beginning of UpdateSlice in vtkSlicerVolumeResliceDriverLogic (line 517 for me).

Could you test it, and let me know if it works for you.

Thanks.

Lchauvin

Lchauvin

2013-05-08 12:57

developer   ~0008581

No actually what I said is wrong.

I thought it worked because when reslicing to Axial, Sagittal or Coronal, you can go to 0 without crash, but if you choose a different reslicing (transverse, in plane, etc...) then it crashes when going to 0.

I will try to update VolumeResliceDriver to see if it works for me.

Thanks.

Lchauvin

Lchauvin

2013-05-08 13:11

developer   ~0008582

It works for me, it's not crashing anymore.
However, as you said, orientation became wrong at 0.

A solution could be, save the previous orientation, and use it if both points are at same position (vector 0,0,0).
How does it sound to you ?

Lchauvin

Lchauvin

2013-07-13 08:09

developer   ~0009042

VisuaLine is now compatible with latest OpenIGTLink version, and preserve the orientation even if length is 0.

jcfr

jcfr

2014-03-06 05:18

administrator   ~0011110

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

Issue History

Date Modified Username Field Change
2013-05-08 12:01 tokuda New Issue
2013-05-08 12:01 tokuda Status new => assigned
2013-05-08 12:01 tokuda Assigned To => Lchauvin
2013-05-08 12:45 tokuda Note Added: 0008579
2013-05-08 12:47 Lchauvin Note Added: 0008580
2013-05-08 12:57 Lchauvin Note Added: 0008581
2013-05-08 13:11 Lchauvin Note Added: 0008582
2013-07-13 08:09 Lchauvin Note Added: 0009042
2013-07-13 08:09 Lchauvin Status assigned => resolved
2013-07-13 08:09 Lchauvin Resolution open => fixed
2014-03-06 05:18 jcfr Note Added: 0011110
2014-03-06 05:20 jcfr Status resolved => closed
2014-03-06 05:54 jcfr Fixed in Version => Slicer 4.4.0
2014-03-06 06:15 jcfr Target Version => Slicer 4.4.0
2015-11-30 17:34 jcfr Category Extension VisuaLine => Extensions