[Dcmlib] gdcm version 0.6: correction

jean-michel.rouet at philips.com jean-michel.rouet at philips.com
Wed Nov 10 09:59:19 CET 2004


Bonjour Mathieu,

On 09/11/2004 21:09:59 Mathieu Malaterre wrote:
>
>Qu'est-ce que tu entends par probleme. Ca passe bien sur toutes les
>machines (ou presque). Est-ce que c'est un warning avec valgrind ?
>

Mon probleme est le suivant: ctest ne passe pas, j'ai un segfault sur 
windows 2000 (la mémoire ne peut pas etre "written"), car

Le membre Decompressed est alloué avec une longeur DecompressedSize
En ensuite le tableau est rempli a l'aide d'un fread sur une longeur 
PixelDataLength

En dans le cas de l'image siemens_gbs_iii-16-acr_nema_1.acr, il se trouve 
que PixelDataLength > DecompressedSize
donc on lit plus de donnée (je ne parle pas de pb de debordement en fin de 
fichier) que le tableau ne peut en contenir, d'ou un debordement de 
tableau

Je suis le seul a observer ce probleme ?
Est-ce un probleme du a CVS pour recuperer les images binaires dans 
gdcmData ?
J'ai vu a ce propos un mail ce matin concernant les -kb -ko pour les 
fichiers binaires. Il serait peut interessant, pour etre sur que l'on 
dispose des bonnes images, de commiter egalement le checksum md5 des 
images binaires. 
dans mon cas: 

$ md5sum ./gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr
83c49fddf19b535867567720dfa97b07 
*./gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr


Je n'utilise pas valgrind, mais Rational Purify. Lui aussi se plaint:

[E] ABW: Array bounds write in memcpy {1 occurrence}
    Writing 4095 bytes to 0x043a2ff9 (512 bytes at 0x043a3df8 illegal)
    Address 0x043a2ff9 is 127489 bytes into a 131072 byte block at 
0x04383df8
    Address 0x043a2ff9 points to a C++ new block in heap 0x04190000
    Thread ID: 0x888
    Error location
        memcpy         [MSVCP71D.dll]
        std::char_traits<char>::copy(char *,char const*,UINT) [iosfwd:448]
        std::basic_streambuf<char,char_traits<char>::std>::xsgetn(char 
*,int) [streambuf:302]
        std::basic_streambuf<char,char_traits<char>::std>::sgetn(char 
*,int) [streambuf:113]
        std::basic_istream<char,char_traits<char>::std>::read(char *,int) 
[istream:657]
 
gdcm::PixelConvert::ReadAndDecompressPixelData(basic_ifstream<char,char_traits<char>::std>::std 
*) [gdcmpixelconvert.cxx:612]
               }
               else if ( IsDecompressed )
               {
         =>        fp->read( (char*)Decompressed, PixelDataLength);
                  if ( fp->fail() || fp->eof())//Fp->gcount() == 1
                  {
                     dbg.Verbose( 0, 
"PixelConvert::ReadAndDecompressPixelData: "
        gdcm::File::GetDecompressed(void) [gdcmfile.cxx:515]
        gdcm::File::GetImageData(void) [gdcmfile.cxx:309]
        main           [testreadwritereadcompare.cxx:57]
        mainCRTStartup [crtexe.c:398]
        _safe_se_handler_count [TestReadWriteReadCompare.exe]
    Allocation location
        new(UINT)      [newop.cpp:10]
        <>=(UINT)      [newaop.cpp:7]
        gdcm::PixelConvert::AllocateDecompressed(void) 
[gdcmpixelconvert.cxx:97]
                 delete [] Decompressed;
              }
 
         =>   Decompressed = new uint8_t[ DecompressedSize ];
            }
 
            /**
 
gdcm::PixelConvert::ReadAndDecompressPixelData(basic_ifstream<char,char_traits<char>::std>::std 
*) [gdcmpixelconvert.cxx:586]
        gdcm::File::GetDecompressed(void) [gdcmfile.cxx:515]
        gdcm::File::GetImageData(void) [gdcmfile.cxx:309]
        main           [testreadwritereadcompare.cxx:57]
        mainCRTStartup [crtexe.c:398]
        _safe_se_handler_count [TestReadWriteReadCompare.exe]





Le titre de ce mail est peut etre trompeur car je teste la version 
"courante" de cvs (updaté hier).


./src/gdcmBinEntry.cxx:             $Revision: 1.35 $
./src/gdcmDebug.cxx:        $Revision: 1.10 $
./src/gdcmDicomDir.cxx:             $Revision: 1.77 $
./src/gdcmDicomDirElement.cxx:      $Revision: 1.22 $
./src/gdcmDicomDirImage.cxx:        $Revision: 1.13 $
./src/gdcmDicomDirMeta.cxx:         $Revision: 1.14 $
./src/gdcmDicomDirObject.cxx:       $Revision: 1.7 $
./src/gdcmDicomDirPatient.cxx:      $Revision: 1.18 $
./src/gdcmDicomDirSerie.cxx:        $Revision: 1.20 $
./src/gdcmDicomDirStudy.cxx:        $Revision: 1.17 $
./src/gdcmDict.cxx:         $Revision: 1.51 $
./src/gdcmDictEntry.cxx:            $Revision: 1.28 $
./src/gdcmDictSet.cxx:      $Revision: 1.44 $
./src/gdcmDirList.cxx:      $Revision: 1.25 $
./src/gdcmDocEntry.cxx:             $Revision: 1.29 $
./src/gdcmDocEntrySet.cxx:          $Revision: 1.25 $
./src/gdcmDocument.cxx:             $Revision: 1.118 $
./src/gdcmElementSet.cxx:           $Revision: 1.26 $
./src/gdcmException.cxx:            $Revision: 1.22 $
./src/gdcmFile.cxx:         $Revision: 1.152 $
./src/gdcmGlobal.cxx:       $Revision: 1.6 $
./src/gdcmHeader.cxx:       $Revision: 1.198 $
./src/gdcmHeaderHelper.cxx:         $Revision: 1.43 $
./src/gdcmJPEGFragment.cxx:         $Revision: 1.1 $
./src/gdcmJPEGFragmentsInfo.cxx:            $Revision: 1.4 $
./src/gdcmJpeg.cxx:         $Revision: 1.28 $
./src/gdcmJpeg12.cxx:       $Revision: 1.26 $
./src/gdcmJpeg16.cxx:       $Revision: 1.5 $
./src/gdcmJpeg2000.cxx:             $Revision: 1.13 $
./src/gdcmJpeg8.cxx:        $Revision: 1.11 $
./src/gdcmPixelConvert.cxx:         $Revision: 1.25 $
./src/gdcmRLEFrame.cxx:             $Revision: 1.1 $
./src/gdcmRLEFramesInfo.cxx:        $Revision: 1.3 $
./src/gdcmSQItem.cxx:       $Revision: 1.35 $
./src/gdcmSeqEntry.cxx:             $Revision: 1.34 $
./src/gdcmTS.cxx:           $Revision: 1.28 $
./src/gdcmUtil.cxx:         $Revision: 1.60 $
./src/gdcmVR.cxx:           $Revision: 1.22 $
./src/gdcmValEntry.cxx:             $Revision: 1.34 $
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20041110/9c023599/attachment.html>


More information about the Dcmlib mailing list