[Issue 19490] New: valgrind: in use at exit: 24 bytes in 1 blocks
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Dec 15 05:52:25 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=19490
Issue ID: 19490
Summary: valgrind: in use at exit: 24 bytes in 1 blocks
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: enhancement
Priority: P1
Component: druntime
Assignee: nobody at puremagic.com
Reporter: andrew.pennebaker at gmail.com
Valgrind appears to find some leftover memory in _D2rt6dmain211_d_run_main...
when I scan for potential leaks.
$ valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all
.dub/build/bin/potato
==1138== Memcheck, a memory error detector
==1138== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==1138== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==1138== Command: .dub/build/bin/potato
==1138==
When mashed,
==1138==
==1138== HEAP SUMMARY:
==1138== in use at exit: 24 bytes in 1 blocks
==1138== total heap usage: 88 allocs, 87 frees, 11,660 bytes allocated
==1138==
==1138== 24 bytes in 1 blocks are still reachable in loss record 1 of 1
==1138== at 0x4C2BADF: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1138== by 0x4C2DE5F: realloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1138== by 0x16BF42: _D2rt4util9container6common8xreallocFNbNiPvmZQe (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x17B3B9:
_D2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x172D39: gc_addRange (in /vagrant/.dub/build/bin/potato)
==1138== by 0x1844BB: _D4core6memory2GC8addRangeFNbNixPvmxC8TypeInfoZv (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x17DDD8:
_D2rt6memory16initStaticDataGCFZ14__foreachbody1MFNbNiKSQCc19sections_elf_shared3DSOZi
(in /vagrant/.dub/build/bin/potato)
==1138== by 0x16AA40:
_D2rt19sections_elf_shared3DSO7opApplyFMDFKSQBqQBqQyZiZi (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x17DD80: _D2rt6memory16initStaticDataGCFZv (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x17C148: rt_init (in /vagrant/.dub/build/bin/potato)
==1138== by 0x167CCB: _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZv (in
/vagrant/.dub/build/bin/potato)
==1138== by 0x167C63:
_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv (in
/vagrant/.dub/build/bin/potato)
==1138==
==1138== LEAK SUMMARY:
==1138== definitely lost: 0 bytes in 0 blocks
==1138== indirectly lost: 0 bytes in 0 blocks
==1138== possibly lost: 0 bytes in 0 blocks
==1138== still reachable: 24 bytes in 1 blocks
==1138== suppressed: 0 bytes in 0 blocks
==1138==
==1138== For counts of detected and suppressed errors, rerun with: -v
==1138== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
I know leaving some dangling memory towards the end of a program can be okay,
but I am new to manual memory management and would feel better about my own
program's memory usage if the D runtime deallocated 100% of its stuff by the
end of normal program termination.
--
More information about the Digitalmars-d-bugs
mailing list