View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0006771 | VTK | (No Category) | public | 2008-04-08 09:30 | 2016-08-12 09:54 | ||||
Reporter | Levap | ||||||||
Assigned To | Kitware Robot | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | closed | Resolution | moved | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0006771: Bug in vtkImageReader | ||||||||
Description | The following code snippet leads to crash (null pointer access) on a Windows XP 32bit SP2, with 2 GB RAM. Code snippet: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vtkImageData* img = vtkImageDate::New(); vtkImageReader* ir = vtkImageReader::New(); ir->SetFileName(“d:\\myvolume.raw”); ir->SetFileDimensionality(3); ir->SetDataByteOrderToLittleEndian(); ir->SetDataScalarType(VTK_FLOAT); ir->SetDataExtent(0, 580, 0, 580, 0, 500); ir->SetDataOrigin(0, 0, 0); ir->SetDataSpacing(1, 1, 1); ir->SetHeaderSize(0); // no header ir->SetNumberOfScalarComponents(1); ir->SwapBytesOff(); ir->SetFileLowerLeft(1); ir->SetOutput(img); ir->Update(); ir->Delete(); img->Delete(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Explanation and approach to a problem: I’m trying to load a large volume (> 640 MB), but operating system fails to allocate enough memory in the function vtkDataArrayTemplate<T>::Allocate(vtkIdType sz, vtkIdType) (file: vtkDataArrayTemplate.txx), so it leads to a following error massege: ERROR: In d:\work\libs\vtk\5_1_0\source\common\vtkDataArrayTemplate.txx, line 133 vtkFloatArray (02736950): Unable to allocate 168200000 elements of size 4 bytes. This behavior is OK! The problem is the next step: despite of the false allocation the vtkImageReader tries to load the volume and make an access to null pointer -> this leads to a crash. Let us take a close look at the function vtkImageReader::ExecuteData(vtkDataObject *output) in the file vtkImageReader.cxx. The error message is produced during the call in the first line of the function: vtkImageData *data = this->AllocateOutputData(output); After this line I would place a check block for a successful memory allocation, something like this: if (!data->GetScalarPointer()) { return; } | ||||||||
Tags | No tags attached. | ||||||||
Project | |||||||||
Type | |||||||||
Attached Files | |||||||||
Relationships | |
Relationships |
Notes | |
(0036966) Kitware Robot (administrator) 2016-08-12 09:54 |
Resolving issue as `moved`. This issue tracker is no longer used. Further discussion of this issue may take place in the current VTK Issues page linked in the banner at the top of this page. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2008-04-08 09:30 | Levap | New Issue | |
2011-06-16 13:11 | Zack Galbreath | Category | => (No Category) |
2016-08-12 09:54 | Kitware Robot | Note Added: 0036966 | |
2016-08-12 09:54 | Kitware Robot | Status | expired => closed |
2016-08-12 09:54 | Kitware Robot | Resolution | open => moved |
2016-08-12 09:54 | Kitware Robot | Assigned To | => Kitware Robot |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |