[Dcmlib] SIEMENS_GBS_III-16-ACR_NEMA_1.acr sur MacOSX

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed Nov 3 23:09:37 CET 2004


Salut,

	Bonne nouvelle si j'enleve l'image SIEMENS_GBS_III-16-ACR_NEMA_1.acr (= 
je la blacklist). Les tests passent sans seg fault sur Mac.
	On dirait que l'on ne fais pas quelque chose de bien beau. valgrind se 
plaint aussi de chose bizarre (*). Tout ce que l'on fais c'est de lire 
un morceau de fichier. J'ai affiche' la taille du morceau a lire:

PixelDataLength:132096

Pareil sur MacOSX. Est-ce que quelqu'un peut me confirmer que la taille 
est valide ?

Merci
Mathieu
Ps: j'ai changer l'interface de TestReadWriteReadCompare  on peux 
l'executer fichier par fichier maintenant:

$ gdcmTests TestReadWriteReadCompare SIEMENS_GBS_III-16-ACR_NEMA_1.acr 
output.dcm


(*)
$ purify /home/malaterre/Creatis/gdcmbin/bin/gdcmTests 
TestReadWriteReadCompare 
/home/malaterre/Creatis/gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr foo.dcm
==20362== Memcheck, a memory error detector for x86-linux.
==20362== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al.
==20362== Using valgrind-2.3.0.CVS, a program supervision framework for 
x86-linux.
==20362== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al.
==20362== For more details, rerun with: -v
==20362==
    Testing: 
/home/malaterre/Creatis/gdcmData/SIEMENS_GBS_III-16-ACR_NEMA_1.acr
PixelDataLength:132096
==20362== Invalid write of size 1
==20362==    at 0x3065E3C: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6ADC8 is 0 bytes after a block of size 131072 
alloc'd
==20362==    at 0x1B9040FD: operator new[](unsigned) 
(vg_replace_malloc.c:138)
==20362==    by 0x1BD7E967: gdcm::PixelConvert::AllocateDecompressed() 
(gdcmPixelConvert.cxx:96)
==20362==    by 0x1BD7FF97: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:585)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==
==20362== Invalid write of size 1
==20362==    at 0x1B9039A2: memcpy (mac_replace_strmem.c:285)
==20362==    by 0x3065DFA: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6B1C7 is not stack'd, malloc'd or (recently) free'd
==20362==
==20362== Invalid write of size 1
==20362==    at 0x1B9039A8: memcpy (mac_replace_strmem.c:286)
==20362==    by 0x3065DFA: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6B1C6 is not stack'd, malloc'd or (recently) free'd
==20362==
==20362== Invalid write of size 1
==20362==    at 0x1B9039AE: memcpy (mac_replace_strmem.c:287)
==20362==    by 0x3065DFA: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6B1C5 is not stack'd, malloc'd or (recently) free'd
==20362==
==20362== Invalid write of size 1
==20362==    at 0x1B9039B7: memcpy (mac_replace_strmem.c:288)
==20362==    by 0x3065DFA: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6B1C4 is not stack'd, malloc'd or (recently) free'd
==20362==
==20362== Invalid write of size 1
==20362==    at 0x1B9039CB: memcpy (mac_replace_strmem.c:292)
==20362==    by 0x3065DFA: std::basic_streambuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30294B8: std::basic_filebuf<char, 
std::char_traits<char> >::xsgetn(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x30336A8: std::istream::read(char*, int) (in 
/usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD800C9: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:612)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)
==20362==  Address 0x1CE6ADCB is 3 bytes after a block of size 131072 
alloc'd
==20362==    at 0x1B9040FD: operator new[](unsigned) 
(vg_replace_malloc.c:138)
==20362==    by 0x1BD7E967: gdcm::PixelConvert::AllocateDecompressed() 
(gdcmPixelConvert.cxx:96)
==20362==    by 0x1BD7FF97: 
gdcm::PixelConvert::ReadAndDecompressPixelData(std::basic_ifstream<char, 
std::char_traits<char> >*) (gdcmPixelConvert.cxx:585)
==20362==    by 0x1BD71DE3: gdcm::File::GetDecompressed() (gdcmFile.cxx:509)
==20362==    by 0x1BD712AF: gdcm::File::GetImageData() (gdcmFile.cxx:303)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)

valgrind: vg_malloc2.c:151 (mk_plain_bszB): Assertion `bszB != 0' failed.
==20362==    at 0xB0029ED6: vgPlain_skin_assert_fail (vg_mylibc.c:1140)
==20362==    by 0xB0029ED5: assert_fail (vg_mylibc.c:1136)
==20362==    by 0xB0029F13: vgPlain_core_assert_fail (vg_mylibc.c:1147)
==20362==    by 0xB00269C0: vgPlain_arena_malloc (vg_malloc2.c:1031)
==20362==    by 0xB00271D4: vgPlain_cli_malloc (vg_malloc2.c:1372)
==20362==    by 0xB115B94F: vgSkin___builtin_new (mac_malloc_wrappers.c:175)

sched status:

Thread 1: status = Runnable, associated_mx = 0x0, associated_cv = 0x0
==20362==    at 0x1B903EBF: operator new(unsigned) (vg_replace_malloc.c:132)
==20362==    by 0x3064C88: std::__default_alloc_template<true, 
0>::allocate(unsigned) (in /usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x306A5A7: std::string::_Rep::_S_create(unsigned, 
std::allocator<char> const&) (in /usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x306B2EE: (within /usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x3067AC8: std::string::string(char const*, 
std::allocator<char> const&) (in /usr/lib/libstdc++.so.5.0.5)
==20362==    by 0x1BD86DA5: gdcm::Util::Format(char const*, ...) 
(gdcmUtil.cxx:48)
==20362==    by 0x1BD5D37F: gdcm::DictEntry::TranslateToKey(unsigned 
short, unsigned short) (gdcmDictEntry.cxx:64)
==20362==    by 0x1BD65ED5: gdcm::Document::GetDocEntryByNumber(unsigned 
short, unsigned short) (gdcmDocument.cxx:1182)
==20362==    by 0x1BD76AF6: gdcm::Header::HasLUT() (gdcmHeader.cxx:1062)
==20362==    by 0x1BD712D0: gdcm::File::GetImageData() (gdcmFile.cxx:310)
==20362==    by 0x80544AE: CompareInternal(std::string const&, 
std::string const&) (TestReadWriteReadCompare.cxx:27)
==20362==    by 0x8054984: TestReadWriteReadCompare(int, char**) 
(TestReadWriteReadCompare.cxx:116)
==20362==    by 0x805149A: main (gdcmTests.cxx:193)


Note: see also the FAQ.txt in the source distribution.
It contains workarounds to several common problems.

If that doesn't help, please report this bug to: valgrind.kde.org

In the bug report, send all the above text, the valgrind
version, and what Linux distro you are using.  Thanks.






More information about the Dcmlib mailing list