[Debian-med-packaging] Bug#988417: dcmtk: Memory leak in OFCharacterEncoding::selectEncoding

Mathieu Malaterre malat at debian.org
Wed May 12 13:45:47 BST 2021


Package: dcmtk
Version: 3.6.4-2.1
Severity: normal

Dear Maintainer,

The DCMTK library seems to leaves memory around after the end of the
process.

Steps:

% valgrind --show-leak-kinds=all --leak-check=full dcmconv +U8 input.dcm output.dcm
==5076== Memcheck, a memory error detector
==5076== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==5076== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==5076== Command: dcmconv +U8 input.dcm output.dcm
==5076==
==5076==
==5076== HEAP SUMMARY:
==5076==     in use at exit: 112 bytes in 2 blocks
==5076==   total heap usage: 77,131 allocs, 77,129 frees, 5,392,709 bytes allocated
==5076==
==5076== 56 bytes in 1 blocks are still reachable in loss record 1 of 2
==5076==    at 0x483577F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==5076==    by 0x50FD389: UDataMemory_createNewInstance_63 (udatamem.cpp:47)
==5076==    by 0x50FB0FA: setCommonICUData(UDataMemory*, signed char, UErrorCode*) (udata.cpp:173)
==5076==    by 0x50FBE5D: setCommonICUDataPointer (udata.cpp:217)
==5076==    by 0x50FBE5D: openCommonData(char const*, int, UErrorCode*) (udata.cpp:718)
==5076==    by 0x50FBF7C: doLoadFromCommonData(signed char, char const*, char const*, char const*, char const*, char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*, UErrorCode*) [clone .constprop.10] (udata.cpp:1065)
==5076==    by 0x50FCA36: doOpenChoice(char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*) (udata.cpp:1347)
==5076==    by 0x51096E9: initAliasData(UErrorCode&) (ucnv_io.cpp:242)
==5076==    by 0x5109F57: umtx_initOnce (umutex.h:274)
==5076==    by 0x5109F57: umtx_initOnce (umutex.h:268)
==5076==    by 0x5109F57: haveAliasData (ucnv_io.cpp:314)
==5076==    by 0x5109F57: ucnv_io_getConverterName_63 (ucnv_io.cpp:754)
==5076==    by 0x5107E16: ucnv_loadSharedData_63 (ucnv_bld.cpp:784)
==5076==    by 0x51082C3: ucnv_createConverter_63 (ucnv_bld.cpp:839)
==5076==    by 0x4AC4B68: create (ofchrenc.cc:73)
==5076==    by 0x4AC4B68: OFCharacterEncoding::selectEncoding(OFString const&, OFString const&) (ofchrenc.cc:693)
==5076==    by 0x49A991C: DcmSpecificCharacterSet::selectCharacterSetWithoutCodeExtensions() (dcspchrs.cc:292)
==5076==
==5076== 56 bytes in 1 blocks are still reachable in loss record 2 of 2
==5076==    at 0x483577F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==5076==    by 0x50FD389: UDataMemory_createNewInstance_63 (udatamem.cpp:47)
==5076==    by 0x50FC030: checkDataItem (udata.cpp:967)
==5076==    by 0x50FC030: checkDataItem (udata.cpp:944)
==5076==    by 0x50FC030: doLoadFromCommonData(signed char, char const*, char const*, char const*, char const*, char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*, UErrorCode*) [clone .constprop.10] (udata.cpp:1077)
==5076==    by 0x50FCA36: doOpenChoice(char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*) (udata.cpp:1347)
==5076==    by 0x51096E9: initAliasData(UErrorCode&) (ucnv_io.cpp:242)
==5076==    by 0x5109F57: umtx_initOnce (umutex.h:274)
==5076==    by 0x5109F57: umtx_initOnce (umutex.h:268)
==5076==    by 0x5109F57: haveAliasData (ucnv_io.cpp:314)
==5076==    by 0x5109F57: ucnv_io_getConverterName_63 (ucnv_io.cpp:754)
==5076==    by 0x5107E16: ucnv_loadSharedData_63 (ucnv_bld.cpp:784)
==5076==    by 0x51082C3: ucnv_createConverter_63 (ucnv_bld.cpp:839)
==5076==    by 0x4AC4B68: create (ofchrenc.cc:73)
==5076==    by 0x4AC4B68: OFCharacterEncoding::selectEncoding(OFString const&, OFString const&) (ofchrenc.cc:693)
==5076==    by 0x49A991C: DcmSpecificCharacterSet::selectCharacterSetWithoutCodeExtensions() (dcspchrs.cc:292)
==5076==    by 0x49ABFFC: DcmSpecificCharacterSet::selectCharacterSet(OFString const&, OFString const&) (dcspchrs.cc:147)
==5076==    by 0x497C7F3: DcmItem::convertCharacterSet(OFString const&, OFString const&, unsigned long, bool) (dcitem.cc:4174)
==5076==
==5076== LEAK SUMMARY:
==5076==    definitely lost: 0 bytes in 0 blocks
==5076==    indirectly lost: 0 bytes in 0 blocks
==5076==      possibly lost: 0 bytes in 0 blocks
==5076==    still reachable: 112 bytes in 2 blocks
==5076==         suppressed: 0 bytes in 0 blocks
==5076==
==5076== For counts of detected and suppressed errors, rerun with: -v
==5076== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

-- System Information:
Debian Release: 10.9
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-debug'), (500, 'proposed-updates-debug'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-0.bpo.5-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages dcmtk depends on:
ii  adduser     3.118
ii  libc6       2.28-10
ii  libdcmtk14  3.6.4-2.1
ii  libgcc1     1:8.3.0-6
ii  libstdc++6  8.3.0-6
ii  libxml2     2.9.4+dfsg1-7+deb10u1
ii  zlib1g      1:1.2.11.dfsg-1

dcmtk recommends no packages.

dcmtk suggests no packages.

-- no debconf information



More information about the Debian-med-packaging mailing list