View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
0008371 | ITK | public | 2009-01-13 11:57 | 2010-10-21 14:13 | |||||||||
Reporter | Bradley Lowekamp | ||||||||||||
Assigned To | Bradley Lowekamp | ||||||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||||||
Status | assigned | Resolution | open | ||||||||||
Platform | OS | OS Version | |||||||||||
Product Version | |||||||||||||
Target Version | Fixed in Version | ||||||||||||
Summary | 0008371: large MetaImage files and 32-bit produces erroneous results | ||||||||||||
Description | When using streaming and 4GB+ file and a 32-bit build only the first 4 GB are read. Requested regions beyond that appear to be read mod 32-bit, that is they go back to the beginning of the file. This should be able to be reproduced with the itkImageFileWriterStreamingTest1 with a 4GB+ file. | ||||||||||||
Tags | No tags attached. | ||||||||||||
Resolution Date | |||||||||||||
Sprint | |||||||||||||
Sprint Status | |||||||||||||
Attached Files | |||||||||||||
Relationships | ||||||
|
Relationships |
Notes | |
(0014547) Bradley Lowekamp (developer) 2009-01-13 12:00 edited on: 2009-01-14 17:26 |
Searching for problematic code, (ie incorrect usage of size_t) I made the following changes which may fix this bug: Index: metaImage.cxx =================================================================== RCS file: /cvsroot/Insight/Insight/Utilities/MetaIO/metaImage.cxx,v retrieving revision 1.107 diff -r1.107 metaImage.cxx 1901c1901 < size_t endfile = tmpWriteStream->tellp(); --- > unsigned long endfile = tmpWriteStream->tellp(); 1904c1904 < size_t padding = seekpos-endfile; --- > unsigned long padding = seekpos-endfile; 2129c2129 < size_t padding = seekpos-currentPos; --- > unsigned long padding = seekpos-currentPos; *not the fix, but wrong types are still used* |
(0014554) Bradley Lowekamp (developer) 2009-01-14 14:41 |
I have been able to reproduce this on apple and linux systems |
(0014555) Bradley Lowekamp (developer) 2009-01-14 17:24 edited on: 2009-01-14 17:29 |
I have been able to track the problem down to the following on 32-bit systems: sizeof(std::streamsize):4 sizeof(std::pos_type):16 sizeof(unsigned long):4 metaImage utilizes unsigned long for seeking and teling around files. This is now clearly the wrong type and the corrected type should be related to pos_type. Also calculations which are assigned to this type need to be casts to avoid overflow. A quick local correction verified that this was the problem and this is the fix. |
(0014571) Mathieu Malaterre (developer) 2009-01-15 04:50 |
No, tellp() returns a streampos (castable to int): http://www.cplusplus.com/reference/iostream/ostream/tellp.html [^] Do not forget to provide a patch bor bcc compiler (yeah ITK supports old/broken compiler). http://www.cmake.org/Wiki/CMake_Borland_Compiler_Issues [^] |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2009-01-13 11:57 | Bradley Lowekamp | New Issue | |
2009-01-13 12:00 | Bradley Lowekamp | Note Added: 0014547 | |
2009-01-14 14:41 | Bradley Lowekamp | Note Added: 0014554 | |
2009-01-14 17:24 | Bradley Lowekamp | Note Added: 0014555 | |
2009-01-14 17:25 | Bradley Lowekamp | Note Edited: 0014547 | |
2009-01-14 17:26 | Bradley Lowekamp | Note Edited: 0014547 | |
2009-01-14 17:29 | Bradley Lowekamp | Note Edited: 0014555 | |
2009-01-15 04:50 | Mathieu Malaterre | Note Added: 0014571 | |
2009-02-03 13:50 | Bradley Lowekamp | Status | new => assigned |
2009-02-03 13:50 | Bradley Lowekamp | Assigned To | => Bradley Lowekamp |
2009-11-22 10:00 | Bradley Lowekamp | Assigned To | Bradley Lowekamp => Julien Jomier |
2009-11-22 10:01 | Bradley Lowekamp | Relationship added | related to 0009260 |
2010-10-21 14:13 | Hans Johnson | Assigned To | Julien Jomier => Bradley Lowekamp |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |