Page MenuHomePhabricator

Workbench crashes when loading multiple 3D+t datasets
Closed, ResolvedPublic

Description

System: Win10 /VS 2019 (other systems not checked)

Workbench crashes when a second 3D+t data is loaded.

Error message:

Ausnahme ausgelöst bei 0x00007FFA20DEFF87 (ig9icd64.dll) in MitkWorkbench.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x0000033921F5B958.

Position wre the crash finally happens

vtkRenderingOpenGL2-8.1d.dll!vtkOpenGLPolyDataMapper::RenderPieceDraw(vtkRenderer * ren, vtkActor * actor) Zeile 2455 C++

glDrawRangeElements(mode, 0,
                    static_cast<GLuint>(numVerts - 1),
                    static_cast<GLsizei>(this->Primitives[i].IBO->IndexCount),
                    GL_UNSIGNED_INT,
                    nullptr);

Instructions how to provoke the crash:
Dataset A: MITK-Data/3D+t-ITKIO-TestData/LinearModel_4D_arbitrary_time_geometry.nrrd
Dataset B: MITK-Data/3D+t-ITKIO-TestData/LinearModel_4D_prop_time_geometry.nrrd

  1. Load A and choose a time point that is not covered by B (e.g. every timestep >=2).
  2. Load B -> crash as described above.

Observiations so far:

  1. After the loading the world time geometry, will be newly constructed (and navigator resets to time step 0). If this has been done, the mappers/vtk have no problem.
  2. Before the update of the world geometry (e.g. triggered by the progress bar while loading), vtk crashes, if the current time point is out side of the time bound of the new data set.
  3. If I deactivate the progress update in IOUtil, no crash happens (see observation 2) and we end in the state described by observation 1.
  4. I think it is a more fundamental problem in the mapper implementation, as the ImageVtk2dMapper set all structures up for the actor but never properly initializes them as he will always land in ImageVtk2Mapper::Update Line 660 and return w/o doing anything.

Revisions and Commits

rMITK MITK
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision

Event Timeline

floca triaged this task as High priority.Jun 3 2020, 10:10 AM
floca created this task.

@kislinsk May be you have further ideas. If you could tell how to property configure the vtk part of the mapper to "just do nothing", I would test it in conjunction with observation 4.
In this case this task would be highly correlated with T25098, as it means to ensure that all data only renders, if the current time step is in their time bound.

Probably a similar to T24767 (sorry for re-opening but maybe the information from that one helps to narrow it down).
I acutally produced the crash even if the timesteps where valid in both images (contrary to the description).

floca added a revision: Restricted Differential Revision.Jul 10 2020, 4:54 PM