<br><font size=2 face="sans-serif">Bonjour Mathieu,</font>
<br>
<br><font size=2 face="sans-serif">On 09/11/2004 21:09:59 Mathieu Malaterre wrote:<br>
><br>
>Qu'est-ce que tu entends par probleme. Ca passe bien sur toutes les<br>
>machines (ou presque). Est-ce que c'est un warning avec valgrind ?<br>
></font>
<br>
<br><font size=2 face="sans-serif">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</font>
<br>
<br><font size=2 face="sans-serif">Le membre Decompressed est alloué avec une longeur DecompressedSize</font>
<br><font size=2 face="sans-serif">En ensuite le tableau est rempli a l'aide d'un fread sur une longeur PixelDataLength</font>
<br>
<br><font size=2 face="sans-serif">En dans le cas de l'image siemens_gbs_iii-16-acr_nema_1.acr, il se trouve que PixelDataLength > DecompressedSize</font>
<br><font size=2 face="sans-serif">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</font>
<br>
<br><font size=2 face="sans-serif">Je suis le seul a observer ce probleme ?</font>
<br><font size=2 face="sans-serif">Est-ce un probleme du a CVS pour recuperer les images binaires dans gdcmData ?</font>
<br><font size=2 face="sans-serif">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. </font>
<br><font size=2 face="sans-serif">dans mon cas: </font>
<br>
<br><font size=2 face="sans-serif">$ md5sum ./gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr</font>
<br><font size=2 face="sans-serif">83c49fddf19b535867567720dfa97b07 *./gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr</font>
<br>
<br>
<br><font size=2 face="sans-serif">Je n'utilise pas valgrind, mais Rational Purify. Lui aussi se plaint:</font>
<br>
<br><font size=2 face="sans-serif"><b>[E] ABW: Array bounds write in memcpy {1 occurrence}</b></font>
<br><font size=2 face="sans-serif">    Writing 4095 bytes to 0x043a2ff9 (512 bytes at 0x043a3df8 illegal)</font>
<br><font size=2 face="sans-serif">    Address 0x043a2ff9 is 127489 bytes into a 131072 byte block at 0x04383df8</font>
<br><font size=2 face="sans-serif">    Address 0x043a2ff9 points to a C++ new block in heap 0x04190000</font>
<br><font size=2 face="sans-serif">    Thread ID: 0x888</font>
<br><font size=2 face="sans-serif">   <b> Error location</b></font>
<br><font size=2 face="sans-serif">        memcpy         [MSVCP71D.dll]</font>
<br><font size=2 face="sans-serif">        std::char_traits<char>::copy(char *,char const*,UINT) [iosfwd:448]</font>
<br><font size=2 face="sans-serif">        std::basic_streambuf<char,char_traits<char>::std>::xsgetn(char *,int) [streambuf:302]</font>
<br><font size=2 face="sans-serif">        std::basic_streambuf<char,char_traits<char>::std>::sgetn(char *,int) [streambuf:113]</font>
<br><font size=2 face="sans-serif">        std::basic_istream<char,char_traits<char>::std>::read(char *,int) [istream:657]</font>
<br><font size=2 face="sans-serif">        gdcm::PixelConvert::ReadAndDecompressPixelData(basic_ifstream<char,char_traits<char>::std>::std *) [gdcmpixelconvert.cxx:612]</font>
<br><font size=2 face="sans-serif">               }</font>
<br><font size=2 face="sans-serif">               else if ( IsDecompressed )</font>
<br><font size=2 face="sans-serif">               {</font>
<br><font size=2 face="sans-serif"><b>         =>        fp->read( (char*)Decompressed, PixelDataLength);</b></font>
<br><font size=2 face="sans-serif">                  if ( fp->fail() || fp->eof())//Fp->gcount() == 1</font>
<br><font size=2 face="sans-serif">                  {</font>
<br><font size=2 face="sans-serif">                     dbg.Verbose( 0, "PixelConvert::ReadAndDecompressPixelData: "</font>
<br><font size=2 face="sans-serif">        gdcm::File::GetDecompressed(void) [gdcmfile.cxx:515]</font>
<br><font size=2 face="sans-serif">        gdcm::File::GetImageData(void) [gdcmfile.cxx:309]</font>
<br><font size=2 face="sans-serif">        main           [testreadwritereadcompare.cxx:57]</font>
<br><font size=2 face="sans-serif">        mainCRTStartup [crtexe.c:398]</font>
<br><font size=2 face="sans-serif">        _safe_se_handler_count [TestReadWriteReadCompare.exe]</font>
<br><font size=2 face="sans-serif">  <b>  Allocation location</b></font>
<br><font size=2 face="sans-serif">        new(UINT)      [newop.cpp:10]</font>
<br><font size=2 face="sans-serif">        <>=(UINT)      [newaop.cpp:7]</font>
<br><font size=2 face="sans-serif">        gdcm::PixelConvert::AllocateDecompressed(void) [gdcmpixelconvert.cxx:97]</font>
<br><font size=2 face="sans-serif">                 delete [] Decompressed;</font>
<br><font size=2 face="sans-serif">              }</font>
<br><font size=2 face="sans-serif">            </font>
<br><font size=2 face="sans-serif"><b>         =>   Decompressed = new uint8_t[ DecompressedSize ];</b></font>
<br><font size=2 face="sans-serif">            }</font>
<br><font size=2 face="sans-serif">            </font>
<br><font size=2 face="sans-serif">            /**</font>
<br><font size=2 face="sans-serif">        gdcm::PixelConvert::ReadAndDecompressPixelData(basic_ifstream<char,char_traits<char>::std>::std *) [gdcmpixelconvert.cxx:586]</font>
<br><font size=2 face="sans-serif">        gdcm::File::GetDecompressed(void) [gdcmfile.cxx:515]</font>
<br><font size=2 face="sans-serif">        gdcm::File::GetImageData(void) [gdcmfile.cxx:309]</font>
<br><font size=2 face="sans-serif">        main           [testreadwritereadcompare.cxx:57]</font>
<br><font size=2 face="sans-serif">        mainCRTStartup [crtexe.c:398]</font>
<br><font size=2 face="sans-serif">        _safe_se_handler_count [TestReadWriteReadCompare.exe]</font>
<br>
<br>
<br>
<br>
<br>
<br><font size=2 face="sans-serif">Le titre de ce mail est peut etre trompeur car je teste la version "courante" de cvs (updaté hier).</font>
<br>
<br>
<br><font size=2 face="sans-serif">./src/gdcmBinEntry.cxx:             $Revision: 1.35 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDebug.cxx:        $Revision: 1.10 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDir.cxx:             $Revision: 1.77 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirElement.cxx:      $Revision: 1.22 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirImage.cxx:        $Revision: 1.13 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirMeta.cxx:         $Revision: 1.14 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirObject.cxx:       $Revision: 1.7 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirPatient.cxx:      $Revision: 1.18 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirSerie.cxx:        $Revision: 1.20 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDicomDirStudy.cxx:        $Revision: 1.17 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDict.cxx:         $Revision: 1.51 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDictEntry.cxx:            $Revision: 1.28 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDictSet.cxx:      $Revision: 1.44 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDirList.cxx:      $Revision: 1.25 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDocEntry.cxx:             $Revision: 1.29 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDocEntrySet.cxx:          $Revision: 1.25 $</font>
<br><font size=2 face="sans-serif">./src/gdcmDocument.cxx:             $Revision: 1.118 $</font>
<br><font size=2 face="sans-serif">./src/gdcmElementSet.cxx:           $Revision: 1.26 $</font>
<br><font size=2 face="sans-serif">./src/gdcmException.cxx:            $Revision: 1.22 $</font>
<br><font size=2 face="sans-serif">./src/gdcmFile.cxx:         $Revision: 1.152 $</font>
<br><font size=2 face="sans-serif">./src/gdcmGlobal.cxx:       $Revision: 1.6 $</font>
<br><font size=2 face="sans-serif">./src/gdcmHeader.cxx:       $Revision: 1.198 $</font>
<br><font size=2 face="sans-serif">./src/gdcmHeaderHelper.cxx:         $Revision: 1.43 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJPEGFragment.cxx:         $Revision: 1.1 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJPEGFragmentsInfo.cxx:            $Revision: 1.4 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJpeg.cxx:         $Revision: 1.28 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJpeg12.cxx:       $Revision: 1.26 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJpeg16.cxx:       $Revision: 1.5 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJpeg2000.cxx:             $Revision: 1.13 $</font>
<br><font size=2 face="sans-serif">./src/gdcmJpeg8.cxx:        $Revision: 1.11 $</font>
<br><font size=2 face="sans-serif">./src/gdcmPixelConvert.cxx:         $Revision: 1.25 $</font>
<br><font size=2 face="sans-serif">./src/gdcmRLEFrame.cxx:             $Revision: 1.1 $</font>
<br><font size=2 face="sans-serif">./src/gdcmRLEFramesInfo.cxx:        $Revision: 1.3 $</font>
<br><font size=2 face="sans-serif">./src/gdcmSQItem.cxx:       $Revision: 1.35 $</font>
<br><font size=2 face="sans-serif">./src/gdcmSeqEntry.cxx:             $Revision: 1.34 $</font>
<br><font size=2 face="sans-serif">./src/gdcmTS.cxx:           $Revision: 1.28 $</font>
<br><font size=2 face="sans-serif">./src/gdcmUtil.cxx:         $Revision: 1.60 $</font>
<br><font size=2 face="sans-serif">./src/gdcmVR.cxx:           $Revision: 1.22 $</font>
<br><font size=2 face="sans-serif">./src/gdcmValEntry.cxx:             $Revision: 1.34 $</font>