View Issue Details

IDProjectCategoryView StatusLast Update
0003234Slicer4Core: Base Codepublic2020-03-04 12:41
Reporterlassoan Assigned Tojcfr  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionunable to reproduce 
Product Version 
Target VersionbacklogFixed in Version 
Summary0003234: Slicer crashes when trying to load a volume larger than 4GB
Description

Slicer crashes when trying to load a 2000x2000x1400 volume (reported by Sophie Ambert, with 32GB RAM).

Did some more tests with the ImageMaker module (24GB virtual memory, Windows 7, 64-bit Slicer, release mode):
2000x2000x1000 (8 bits) => OK
2000x2000x1060 (8 bits) => OK
2000x2000x1070 (8 bits) => OK
2000x2000x1075 (8 bits) => crash
2000x2000x1400 (8 bits) => crash

So, Slicer crashes if the volume size is larger than 4GB (1024x1024x1024x4). Most probably somewhere a 32-bit integer or pointer is used for storing buffer size or index in the buffer. 64-bit pointers/integers should be used.

TagsNo tags attached.

Activities

pieper

pieper

2013-07-19 04:41

administrator   ~0009143

I tried the following on mac (16G ram) with no crash.

First get the MRHead from SampleData

Then in the python console:

n = getNode('MRH*')
i = vtk.vtkImageData()
i.SetDimensions(8000,2000,2000)
i.SetScalarTypeToChar()
i.AllocateScalars()
n.SetAndObserveImageData(i)

So the issue is probably not in the vtk/slicer layer.

Also the original reporter of the crash said:

"We are using GPU with 32GB RAM and NVIDIA graphic card, 64-bits. But when I load the images, Slicer crash. There is an error itk::DefaultConvertPixelTrait <unsigned char> according to the debugger."

so the issue is probably in the ITK IO layer.

lassoan

lassoan

2013-07-19 06:23

developer   ~0009144

I could reproduce Steve's scenario (create large VTK image in the Python console, 2000x2000x1400) on Windows. No crash occurred.

However, saving/loading/CLI execution fail as follows:

Save as:

  • nrrd => OK
  • vtk => OK
  • mhd, mha => fails with an error message: ERROR: In ..........\Slicer-1\Libs\MRML\Core\vtkMRMLVolumeArchetypeStorageNode.cxx, line 716
    vtkMRMLVolumeArchetypeStorageNode (000000001B32B850): UpdateFileList: Failed to write 'F:/tmp/TempWriteMRHead/MRHead.mhd'.

Load from file:

  • nrrd => fails: progress bar freezes at 21%, no error message, no crash or hang, the volume is not loaded
  • vtk => fails (same way as for nrrd)
  • mhd => fails (same way as for nrrd)

CLI execution (e.g., threshold scalar volume):

  • crash

Based on these results, the title of the bug report should be changed.

pieper

pieper

2013-07-19 13:54

administrator   ~0009150

I checked in the debugger and loading the .nrrd format completed for me without errors if I waited long enough.

pieper

pieper

2013-07-19 14:59

administrator   ~0009151

Running a CLI (Orient Scalar Volume) with an 8g volume worked without crashing.

lassoan

lassoan

2013-07-19 15:48

developer   ~0009152

I guess you have these results (nrrd format reading success, non-crashing CLI)on mac. Could you try it on windows a well to see if it's a computer or OS specific issue?

pieper

pieper

2013-07-29 13:58

administrator   ~0009262

On a windows 7 64 bit build with VS2008 pro I am able to replicate a crash as using the steps described in note 9143 above. I can save the file fine in .nrrd, but on loading I get a crash in memset (stack trace below). The code seems correct as far as I can tell, and since it works on linux and mac it probably is correct.

msvcr90d.dll!memset(unsigned char * buf=0x0000000000000000, unsigned char value='', unsigned long count=1657830403)  Line 145  Asm
ITKFactoryRegistration.dll!itk__nrrdCalloc(Nrrd * nrrd=0x0000000010b82dc0, NrrdIoState_t * nio=0x0000000010b83b50, _iobuf * file=0x00000000673d86c0)  Line 229  C

ITKFactoryRegistration.dll!_nrrdFormatNRRD_read(_iobuf file=0x00000000673d86c0, Nrrd nrrd=0x0000000010b82dc0, NrrdIoState_t nio=0x0000000010b83b50) Line 510 + 0x1a bytes C
ITKFactoryRegistration.dll!itk__nrrdRead(Nrrd
nrrd=0x0000000010b82dc0, _iobuf file=0x00000000673d86c0, const char string=0x0000000000000000, NrrdIoState_t _nio=0x0000000010b83b50) Line 441 + 0x27 bytes C
ITKFactoryRegistration.dll!itk_nrrdRead(Nrrd
nrrd=0x0000000010b82dc0, _iobuf file=0x00000000673d86c0, NrrdIoState_t _nio=0x0000000010b83b50) Line 482 + 0x17 bytes C
ITKFactoryRegistration.dll!itk_nrrdLoad(Nrrd nrrd=0x0000000010b82dc0, const char filename=0x0000000010b7cf90, NrrdIoState_t nio=0x0000000010b83b50) Line 628 + 0x14 bytes C
ITKFactoryRegistration.dll!itk::NrrdImageIO::Read(void
buffer=0x0000000180090070) Line 750 + 0x29 bytes C++
vtkITK.dll!itk::ImageFileReader<itk::Image<char,3>,itk::DefaultConvertPixelTraits<char> >::GenerateData() Line 446 + 0x4d bytes C++
ITKCommon-4.4.dll!itk::ProcessObject::UpdateOutputData(itk::DataObject __formal=0x0000000010b969d0) Line 1743 + 0x19 bytes C++
ITKCommon-4.4.dll!itk::DataObject::UpdateOutputData() Line 437 C++
vtkITK.dll!itk::ImageBase<3>::UpdateOutputData() Line 287 C++
ITKCommon-4.4.dll!itk::DataObject::Update() Line 360 C++
ITKCommon-4.4.dll!itk::ProcessObject::UpdateLargestPossibleRegion() Line 1870 C++
vtkITK.dll!vtkITKArchetypeImageSeriesScalarReader::ExecuteData(vtkDataObject
output=0x0000000010b71cc0) Line 152 + 0x200 bytes C++
vtkFiltering.dll!vtkSource::ProcessRequest(vtkInformation request=0x000000001096dd80, vtkInformationVector inputVector=0x0000000000000000, vtkInformationVector outputVector=0x0000000010b71ed0) Line 670 C++
vtkFiltering.dll!vtkExecutive::CallAlgorithm(vtkInformation request=0x000000001096dd80, int direction=1, vtkInformationVector inInfo=0x0000000000000000, vtkInformationVector outInfo=0x0000000010b71ed0) Line 747 + 0x39 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ExecuteData(vtkInformation request=0x000000001096dd80, vtkInformationVector inInfo=0x0000000000000000, vtkInformationVector outInfo=0x0000000010b71ed0) Line 507 + 0x2e bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x000000001096dd80, vtkInformationVector inInfoVec=0x0000000000000000, vtkInformationVector outInfoVec=0x0000000010b71ed0) Line 279 + 0x22 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x000000001096dd80, vtkInformationVector inInfoVec=0x0000000000000000, vtkInformationVector outInfoVec=0x0000000010b71ed0) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::UpdateData(int outputPort=0) Line 450 C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::Update(int port=0) Line 326 + 0x1e bytes C++
vtkFiltering.dll!vtkSource::Update() Line 137 C++
MRMLCore.dll!vtkMRMLVolumeArchetypeStorageNode::ReadDataInternal(vtkMRMLNode refNode=0x000000001091aa90) Line 350 + 0x3e bytes C++
MRMLCore.dll!vtkMRMLStorageNode::ReadData(vtkMRMLNode
refNode=0x000000001091aa90, bool temporary=false) Line 1089 + 0x21 bytes C++
vtkSlicerVolumesModuleLogic.dll!vtkSlicerVolumesLogic::AddArchetypeVolume(const std::list<ArchetypeVolumeNodeSet (cdecl)(std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,vtkMRMLScene ,int),std::allocator<ArchetypeVolumeNodeSet (cdecl)(std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,vtkMRMLScene ,int)> > & volumeRegistry=[7](0x000007fed42329ff anonymous namespace'::MultiVolumeNodeSetFactory(class std::basic_string&lt;char,struct std::char_traits&lt;char>,class std::allocator&lt;char> > & ptr64,class vtkMRMLScene * ptr64,int),0x000007fed5ea1078anonymous namespace'::DiffusionWeightedVolumeNodeSetFactory(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & ptr64,class vtkMRMLScene ptr,...), const char filename=0x000000000ed8ea98, const char volname=0x0000000006407378, int loadingOptions=4, vtkStringArray fileList=0x0000000000000000) Line 535 + 0x41 bytes C++
vtkSlicerVolumesModuleLogic.dll!vtkSlicerVolumesLogic::AddArchetypeVolume(const char filename=0x000000000ed8ea98, const char volname=0x0000000006407378, int loadingOptions=4, vtkStringArray fileList=0x0000000000000000) Line 473 C++
qSlicerVolumesModule.dll!qSlicerVolumesIO::load(const QMap<QString,QVariant> & properties={...}) Line 157 + 0xab bytes C++
qSlicerBaseQTCore.dll!qSlicerCoreIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 329 + 0x1e bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection loadedNodes=0x0000000000000000) Line 411 + 0x26 bytes C++
qSlicerBaseQTCore.dll!qSlicerCoreIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 307 + 0x33 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection loadedNodes=0x0000000000000000) Line 411 + 0x26 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QList<QMap<QString,QVariant> > & files={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 433 + 0xa4 bytes C++
qSlicerBaseQTGUI.dll!qSlicerDataDialog::exec(const QMap<QString,QVariant> & readerProperties={...}) Line 497 + 0x38 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::openDialog(QString fileType=0x0000000000129b70, qSlicerFileDialog::IOAction action=Read, QMap<QString,QVariant> properties=0x0000000000129b60, vtkCollection loadedNodes=0x0000000000000000) Line 253 + 0x18 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::openAddDataDialog() Line 130 C++
qSlicerWelcomeModule.dll!qSlicerWelcomeModuleWidget::loadNonDicomData() Line 176 C++
qSlicerWelcomeModule.dll!qSlicerWelcomeModuleWidget::qt_static_metacall(QObject
_o=0x00000000062210e0, QMetaObject::Call _c=InvokeMetaMethod, int _id=0, void _a=0x0000000000129df0) Line 56 + 0xa bytes C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x000000000ef5a2e0, const QMetaObject m=0x0000000063b3bf68, int local_signal_index=2, void argv=0x0000000000129df0) Line 3549 C++
QtGuid4.dll!QAbstractButton::clicked(bool _t1=false) Line 221 C++
QtGuid4.dll!QAbstractButtonPrivate::emitClicked() Line 550 C++
QtGuid4.dll!QAbstractButtonPrivate::click() Line 541 + 0xa bytes C++
QtGuid4.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent e=0x000000000012aea8) Line 1124 C++
QtGuid4.dll!QWidget::event(QEvent
event=0x000000000012aea8) Line 8372 C++
QtGuid4.dll!QAbstractButton::event(QEvent e=0x000000000012aea8) Line 1083 C++
QtGuid4.dll!QPushButton::event(QEvent
e=0x000000000012aea8) Line 684 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject receiver=0x000000000ef5a2e0, QEvent e=0x000000000012aea8) Line 4551 + 0x15 bytes C++
QtGuid4.dll!QApplication::notify(QObject receiver=0x000000000ef5a2e0, QEvent e=0x000000000012aea8) Line 4094 + 0x51 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject receiver=0x000000000ef5a2e0, QEvent event=0x000000000012aea8) Line 915 + 0x26 bytes C++
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject receiver=0x000000000ef5a2e0, QEvent event=0x000000000012aea8) Line 234 + 0x4c bytes C++
QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget receiver=0x000000000ef5a2e0, QMouseEvent event=0x000000000012aea8, QWidget alienWidget=0x000000000ef5a2e0, QWidget nativeWidget=0x000000000c1a02e0, QWidget buttonDown=0x0000000063e77340, QPointer<QWidget> & lastMouseReceiver={...}, bool spontaneous=true) Line 3160 + 0x16 bytes C++
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Line 3363 + 0x3f bytes C++
QtGuid4.dll!QtWndProc(HWND * hwnd=0x00000000000307e0, unsigned int message=514, unsigned int64 wParam=0, int64 lParam=11862305) Line 1696 + 0x15 bytes C++
user32.dll!0000000077159bd1()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!00000000771598da()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x000000000012f170) Line 810 C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x000000000012f1bc) Line 1202 + 0x27 bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x000000000012f238) Line 150 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x000000000012f2c0) Line 204 + 0x59 bytes C++
QtCored4.dll!QCoreApplication::exec() Line 1187 + 0x23 bytes C++
QtGuid4.dll!QApplication::exec() Line 3813 C++
SlicerApp-real.exe!`anonymous namespace'::SlicerAppMain(int argc=1, char argv=0x0000000003626330) Line 193 + 0x6 bytes C++
SlicerApp-real.exe!WinMain(HINSTANCE
hInstance=0x000000013f640000, HINSTANCE__ hPrevInstance=0x0000000000000000, char * lpCmdLine=0x00000000002877ab, int nShowCmd=1) Line 212 + 0xe bytes C++
SlicerApp-real.exe!__tmainCRTStartup() Line 578 + 0x42 bytes C
SlicerApp-real.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!000000007703652d()
ntdll.dll!000000007726c521()

pieper

pieper

2013-07-29 14:46

administrator   ~0009264

Saving as .vtk and then reloading as a volume gives this error (looks like a buffer overrun due to the <char> data type which is not typically tested, but could be due to the size of the dataset).

MRMLCore.dll!vtkImageAccumulateDiscreteExecute<char>(vtkImageAccumulateDiscrete self=0x00000000109bd290, vtkImageData inData=0x00000000109953c0, char inPtr=0x000000007fff0070, vtkImageData outData=0x00000000109bda60, int outPtr=0x0000000010bbe000) Line 111 + 0x8 bytes C++
MRMLCore.dll!vtkImageAccumulateDiscrete::ExecuteData(vtkDataObject
formal=0x00000000109bda60) Line 158 C++
vtkFiltering.dll!vtkSource::ProcessRequest(vtkInformation request=0x000000001095f820, vtkInformationVector inputVector=0x00000000109be070, vtkInformationVector outputVector=0x00000000109bdf40) Line 670 C++
vtkFiltering.dll!vtkExecutive::CallAlgorithm(vtkInformation request=0x000000001095f820, int direction=1, vtkInformationVector inInfo=0x00000000109be070, vtkInformationVector outInfo=0x00000000109bdf40) Line 747 + 0x39 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ExecuteData(vtkInformation request=0x000000001095f820, vtkInformationVector inInfo=0x00000000109be070, vtkInformationVector outInfo=0x00000000109bdf40) Line 507 + 0x2e bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x000000001095f820, vtkInformationVector inInfoVec=0x00000000109be070, vtkInformationVector outInfoVec=0x00000000109bdf40) Line 279 + 0x22 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x000000001095f820, vtkInformationVector inInfoVec=0x00000000109be070, vtkInformationVector outInfoVec=0x00000000109bdf40) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkExecutive::ForwardUpstream(vtkInformation request=0x000000001095f820) Line 646 + 0x38 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x000000001095f820, vtkInformationVector inInfoVec=0x00000000109730c0, vtkInformationVector outInfoVec=0x0000000010972f90) Line 265 + 0x18 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x000000001095f820, vtkInformationVector inInfoVec=0x00000000109730c0, vtkInformationVector outInfoVec=0x0000000010972f90) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::UpdateData(int outputPort=0) Line 450 C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::Update(int port=0) Line 326 + 0x1e bytes C++
vtkFiltering.dll!vtkSource::Update() Line 137 C++
MRMLCore.dll!vtkMRMLScalarVolumeDisplayNode::CalculateAutoLevels() Line 740 C++
MRMLCore.dll!vtkMRMLScalarVolumeDisplayNode::ProcessMRMLEvents(vtkObject
caller=0x0000000010969260, unsigned long event=33, void callData=0x0000000000000000) Line 404 C++
MRMLCore.dll!vtkMRMLNode::MRMLCallback(vtkObject
caller=0x0000000010969260, unsigned long eid=33, void clientData=0x0000000010969260, void callData=0x0000000000000000) Line 754 C++
vtkCommon.dll!vtkCallbackCommand::Execute(vtkObject caller=0x0000000010969260, unsigned long event=33, void callData=0x0000000000000000) Line 43 C++
MRMLCore.dll!vtkEventBroker::InvokeObservation(vtkObservation observation=0x000000001096e860, unsigned long eid=33, void callData=0x0000000000000000) Line 872 C++
MRMLCore.dll!vtkEventBroker::ProcessEvent(vtkObservation observation=0x000000001096e860, vtkObject caller=0x0000000010969260, unsigned long eid=33, void callData=0x0000000000000000) Line 716 + 0x25 bytes C++
MRMLCore.dll!vtkEventBroker::Callback(vtkObject
caller=0x0000000010969260, unsigned long eid=33, void clientData=0x000000001096e860, void callData=0x0000000000000000) Line 944 C++
vtkCommon.dll!vtkCallbackCommand::Execute(vtkObject caller=0x0000000010969260, unsigned long event=33, void callData=0x0000000000000000) Line 43 C++
vtkCommon.dll!vtkSubjectHelper::InvokeEvent(unsigned long event=33, void callData=0x0000000000000000, vtkObject self=0x0000000010969260) Line 623 C++
vtkCommon.dll!vtkObject::InvokeEvent(unsigned long event=33, void callData=0x0000000000000000) Line 789 + 0x1c bytes C++
vtkCommon.dll!vtkObject::Modified() Line 856 C++
MRMLCore.dll!vtkMRMLNode::Modified() Line 364 C++
MRMLCore.dll!vtkMRMLVolumeDisplayNode::SetInputImageData(vtkImageData
imageData=0x00000000109953c0) Line 109 C++
MRMLCore.dll!vtkMRMLScalarVolumeDisplayNode::SetInputImageData(vtkImageData imageData=0x00000000109953c0) Line 160 C++
MRMLCore.dll!vtkMRMLVolumeNode::SetAndObserveImageData(vtkImageData
imageData=0x00000000109953c0) Line 648 C++
MRMLCore.dll!vtkMRMLVolumeArchetypeStorageNode::ReadDataInternal(vtkMRMLNode refNode=0x0000000010a5c660) Line 438 C++
MRMLCore.dll!vtkMRMLStorageNode::ReadData(vtkMRMLNode
refNode=0x0000000010a5c660, bool temporary=false) Line 1089 + 0x21 bytes C++
vtkSlicerVolumesModuleLogic.dll!vtkSlicerVolumesLogic::AddArchetypeVolume(const std::list<ArchetypeVolumeNodeSet (
cdecl)(std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,vtkMRMLScene ,int),std::allocator<ArchetypeVolumeNodeSet (cdecl)(std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,vtkMRMLScene ,int)> > & volumeRegistry=[7](0x000007fed43629ff anonymous namespace'::MultiVolumeNodeSetFactory(class std::basic_string&lt;char,struct std::char_traits&lt;char>,class std::allocator&lt;char> > & ptr64,class vtkMRMLScene * ptr64,int),0x000007fed5fd1078anonymous namespace'::DiffusionWeightedVolumeNodeSetFactory(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & ptr64,class vtkMRMLScene ptr,...), const char filename=0x00000000065e16c8, const char volname=0x000000000ee94198, int loadingOptions=4, vtkStringArray fileList=0x0000000000000000) Line 535 + 0x41 bytes C++
vtkSlicerVolumesModuleLogic.dll!vtkSlicerVolumesLogic::AddArchetypeVolume(const char filename=0x00000000065e16c8, const char volname=0x000000000ee94198, int loadingOptions=4, vtkStringArray fileList=0x0000000000000000) Line 473 C++
qSlicerVolumesModule.dll!qSlicerVolumesIO::load(const QMap<QString,QVariant> & properties={...}) Line 157 + 0xab bytes C++
qSlicerBaseQTCore.dll!qSlicerCoreIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 329 + 0x1e bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection loadedNodes=0x0000000000000000) Line 411 + 0x26 bytes C++
qSlicerBaseQTCore.dll!qSlicerCoreIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 307 + 0x33 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QString & fileType={...}, const QMap<QString,QVariant> & parameters={...}, vtkCollection loadedNodes=0x0000000000000000) Line 411 + 0x26 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::loadNodes(const QList<QMap<QString,QVariant> > & files={...}, vtkCollection
loadedNodes=0x0000000000000000) Line 433 + 0xa4 bytes C++
qSlicerBaseQTGUI.dll!qSlicerDataDialog::exec(const QMap<QString,QVariant> & readerProperties={...}) Line 497 + 0x38 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::openDialog(QString fileType=0x0000000000309b60, qSlicerFileDialog::IOAction action=Read, QMap<QString,QVariant> properties=0x0000000000309b50, vtkCollection loadedNodes=0x0000000000000000) Line 253 + 0x18 bytes C++
qSlicerBaseQTGUI.dll!qSlicerIOManager::openAddDataDialog() Line 130 C++
qSlicerApp.dll!qSlicerAppMainWindowCore::onFileLoadDataActionTriggered() Line 149 C++
qSlicerApp.dll!qSlicerAppMainWindowCore::qt_static_metacall(QObject
_o=0x000000000c2408f0, QMetaObject::Call _c=InvokeMetaMethod, int _id=1, void _a=0x0000000000309dc0) Line 102 + 0xa bytes C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x000000000c0c2af0, const QMetaObject m=0x0000000063e75608, int local_signal_index=1, void argv=0x0000000000309dc0) Line 3549 C++
QtGuid4.dll!QAction::triggered(bool _t1=false) Line 278 C++
QtGuid4.dll!QAction::activate(QAction::ActionEvent event=Trigger) Line 1259 C++
QtGuid4.dll!QAction::trigger() Line 218 + 0x15 bytes C++
QtGuid4.dll!QToolButton::nextCheckState() Line 1145 C++
QtGuid4.dll!QAbstractButtonPrivate::click() Line 531 C++
QtGuid4.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent e=0x000000000030af28) Line 1124 C++
QtGuid4.dll!QToolButton::mouseReleaseEvent(QMouseEvent
e=0x000000000030af28) Line 719 C++
QtGuid4.dll!QWidget::event(QEvent event=0x000000000030af28) Line 8372 C++
QtGuid4.dll!QAbstractButton::event(QEvent
e=0x000000000030af28) Line 1083 C++
QtGuid4.dll!QToolButton::event(QEvent event=0x000000000030af28) Line 1161 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject
receiver=0x000000000c220340, QEvent e=0x000000000030af28) Line 4551 + 0x15 bytes C++
QtGuid4.dll!QApplication::notify(QObject
receiver=0x000000000c220340, QEvent e=0x000000000030af28) Line 4094 + 0x51 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject
receiver=0x000000000c220340, QEvent event=0x000000000030af28) Line 915 + 0x26 bytes C++
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject
receiver=0x000000000c220340, QEvent event=0x000000000030af28) Line 234 + 0x4c bytes C++
QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget
receiver=0x000000000c220340, QMouseEvent event=0x000000000030af28, QWidget alienWidget=0x000000000c220340, QWidget nativeWidget=0x000000000c1e73c0, QWidget * buttonDown=0x0000000063e77340, QPointer<QWidget> & lastMouseReceiver={...}, bool spontaneous=true) Line 3160 + 0x16 bytes C++
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Line 3363 + 0x3f bytes C++
QtGuid4.dll!QtWndProc(HWND
hwnd=0x00000000000907cc, unsigned int message=514, unsigned int64 wParam=0, int64 lParam=1376293) Line 1696 + 0x15 bytes C++
user32.dll!0000000077159bd1()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!00000000771598da()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x000000000030f1f0) Line 810 C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x000000000030f23c) Line 1202 + 0x27 bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x000000000030f2b8) Line 150 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x000000000030f340) Line 204 + 0x59 bytes C++
QtCored4.dll!QCoreApplication::exec() Line 1187 + 0x23 bytes C++
QtGuid4.dll!QApplication::exec() Line 3813 C++
SlicerApp-real.exe!`anonymous namespace'::SlicerAppMain(int argc=1, char
argv=0x0000000003a76330) Line 193 + 0x6 bytes C++
SlicerApp-real.exe!WinMain(HINSTANCE__
hInstance=0x000000013fb40000, HINSTANCE hPrevInstance=0x0000000000000000, char lpCmdLine=0x00000000004077ab, int nShowCmd=1) Line 212 + 0xe bytes C++
SlicerApp-real.exe!
tmainCRTStartup() Line 578 + 0x42 bytes C
SlicerApp-real.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!000000007703652d()
ntdll.dll!000000007726c521()

sophambe

sophambe

2013-08-12 20:51

reporter   ~0009466

I think it is most likely due to this step:
vtkITK.dll!itk::ImageFileReader<itk::Image<char,3>,itk::DefaultConvertPixelTraits<char> >::Convert

Could that be possible that the error is when you declare the variable char *loadBuffer in the itkFileImageReader.hxx line 386.

When I launched the debugger after loading Tiff slices images(8GB), the value of outputData (itk::ConvertPixelBuffer) is indicated as "<BadPtr>".

pieper

pieper

2013-08-15 05:39

administrator   ~0009473

Since this appears to be something in the pixel traits code of the itk file reader, it would be good to know if we can replicate this issue using a pure ITK program. Then the issue could be reported to the ITK community. Is anyone able to do this?

jcfr

jcfr

2014-05-13 08:57

administrator   ~0011760

Un-targeting this issue. It has been in feedback mode for more than three month. Please, re-target if you have more information.

jcfr

jcfr

2018-03-22 03:17

administrator   ~0015604

Last edited: 2018-03-22 03:18

View 3 revisions

Also found out that the following causes slicer to crash:

n = getNode('MRH*')
i = vtk.vtkImageData()
i.SetDimensions(8000,2000,2000)
n.SetAndObserveImageData(i)

I found this out because trying to copy the example from Steve partially fail (because of VTK API updates):

Python console user input: n = getNode('MRH*')
Python console user input: i = vtk.vtkImageData()
Python console user input: i.SetDimensions(8000,2000,2000)
Python console user input: i.SetScalarTypeToChar()
Traceback (most recent call last):
  File &quot;&lt;console>&quot;, line 1, in &lt;module>
AttributeError: 'vtkCommonDataModelPython.vtkImageData' object has no attribute 'SetScalarTypeToChar'
Python console user input: i.AllocateScalars()
Traceback (most recent call last):
  File &quot;&lt;console>&quot;, line 1, in &lt;module>
TypeError: no overloads of AllocateScalars() take 0 arguments
Python console user input: n.SetAndObserveImageData(i)
Initialize(): no image data to interpolate!
lassoan

lassoan

2018-05-30 01:20

developer   ~0015827

Retargeting stale issues to backlog.

lassoan

lassoan

2020-03-04 12:41

developer   ~0016337

Not reproducible anymore in recent releases (tested in Slicer-4.11.0-2020-03-01 - revision 28798). Probably fixed by ITK updates.

Issue History

Date Modified Username Field Change
2013-07-19 02:12 lassoan New Issue
2013-07-19 02:12 lassoan Status new => assigned
2013-07-19 02:12 lassoan Assigned To => jcfr
2013-07-19 04:41 pieper Note Added: 0009143
2013-07-19 06:23 lassoan Note Added: 0009144
2013-07-19 13:54 pieper Note Added: 0009150
2013-07-19 14:59 pieper Note Added: 0009151
2013-07-19 15:48 lassoan Note Added: 0009152
2013-07-29 13:58 pieper Note Added: 0009262
2013-07-29 14:46 pieper Note Added: 0009264
2013-08-12 20:51 sophambe Note Added: 0009466
2013-08-15 05:39 pieper Note Added: 0009473
2013-08-15 05:52 jcfr Target Version => Slicer 4.3.0
2013-08-15 05:52 jcfr Severity minor => crash
2013-08-15 06:27 jcfr Status assigned => feedback
2013-09-03 07:44 jcfr Target Version Slicer 4.3.0 => Slicer 4.3.1
2013-10-01 11:50 jcfr Target Version Slicer 4.3.1 => Slicer 4.3.2
2014-03-06 10:15 nicole Target Version Slicer 4.3.2 => Slicer 4.4.0
2014-05-13 08:56 jcfr Target Version Slicer 4.4.0 =>
2014-05-13 08:57 jcfr Note Added: 0011760
2018-03-22 03:17 jcfr Note Added: 0015604
2018-03-22 03:18 jcfr Note Edited: 0015604 View Revisions
2018-03-22 03:18 jcfr Note Edited: 0015604 View Revisions
2018-05-30 01:20 lassoan Target Version => backlog
2018-05-30 01:20 lassoan Note Added: 0015827
2020-03-04 12:41 lassoan Status feedback => closed
2020-03-04 12:41 lassoan Resolution open => unable to reproduce
2020-03-04 12:41 lassoan Note Added: 0016337