[Dcmlib] gdcm version 0.6: correction
Benoit Regrain
benoit.regrain at creatis.insa-lyon.fr
Wed Nov 10 17:22:50 CET 2004
Je viens de m'occuper de ce problème. TestReadWriteReadCompare normalement passe.
Par contre, j'ai toujours des problèmes avec le ShowDicom...
J'ai constaté le phénomène suivant :
- on récupère la HashTable des tags du header (par référence... tres important) : méthode GetTagHT
- on essaye de parcourir cette hash table et cela plante.
Si on essaye de passer la hash table par copie (donc sans la référence) alors cela plante directement
à l'appel de cette méthode. J'avais déjà vu cela concernant les objets de la STL avec MSVC6 (toute
plateforme confondue). Et c'etait dû à des problèmes de link incremental.
Si quelqu'un en sait plus la dessus... je suis preneur de toute information. Merci.
Benoit
----- Original Message -----
From: jean-michel.rouet at philips.com
To: Mathieu Malaterre
Cc: Mailing list gdcm
Sent: Wednesday, November 10, 2004 9:59 AM
Subject: Re: [Dcmlib] gdcm version 0.6: correction
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 $
------------------------------------------------------------------------------
_______________________________________________
Dcmlib mailing list
Dcmlib at creatis.insa-lyon.fr
http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20041110/8cfd1474/attachment.html>
More information about the Dcmlib
mailing list