bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory leak detected by Valgrind


From: Zachary Fields
Subject: Re: Memory leak detected by Valgrind
Date: Tue, 15 Jun 2021 19:19:49 +0000 (UTC)

 Again, this can be reproduced with only Valgrind and Bash installed, by 
copy/pasting the following command:

echo "#! /bin/bashecho 'Am I leaking?'" > leak.sh \&& chmod +x leak.sh \&& 
LC_ALL=C valgrind -v --leak-check=full /bin/bash leak.sh

This is the best log I know how to generate using Valgrind without first 
understanding the composition or architecture of the underlying program (i.e. 
`bash`).
Here is the log from my machine:

$ LC_ALL=C valgrind -v --leak-check=full /bin/bash leak.sh==53602== Memcheck, a 
memory error detector==53602== Copyright (C) 2002-2017, and GNU GPL'd, by 
Julian Seward et al.==53602== Using Valgrind-3.16.1-36d6727e1d-20200622X and 
LibVEX; rerun with -h for copyright info==53602== Command: /bin/bash 
leak.sh==53602== --53602-- Valgrind options:--53602--    -v--53602--    
--leak-check=full--53602-- Contents of /proc/version:--53602--   Linux version 
5.11.0-7614-generic (buildd@lgw01-amd64-047) (gcc (Ubuntu 10.2.0-13ubuntu1) 
10.2.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1) 
#15~1622578982~20.10~383c0a9-Ubuntu SMP Wed Jun 2 00:54:41 UTC 2--53602-- 
--53602-- Arch and hwcaps: AMD64, LittleEndian, 
amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand--53602-- Page 
sizes: currently 4096, max supported 4096--53602-- Valgrind library directory: 
/usr/lib/x86_64-linux-gnu/valgrind--53602-- Reading syms from 
/usr/bin/bash--53602--    object doesn't have a symbol table--53602-- Reading 
syms from /usr/lib/x86_64-linux-gnu/ld-2.32.so--53602--   Considering 
/usr/lib/x86_64-linux-gnu/ld-2.32.so ..--53602--   .. CRC mismatch (computed 
26410511 wanted 6010827e)--53602--   Considering 
/lib/x86_64-linux-gnu/ld-2.32.so ..--53602--   .. CRC mismatch (computed 
26410511 wanted 6010827e)--53602--   Considering 
/usr/lib/debug/lib/x86_64-linux-gnu/ld-2.32.so ..--53602--   .. CRC is 
valid--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/valgrind/memcheck-amd64-linux--53602--    object 
doesn't have a symbol table--53602--    object doesn't have a dynamic symbol 
table--53602-- Scheduler: using generic scheduler lock implementation.--53602-- 
Reading suppressions file: 
/usr/lib/x86_64-linux-gnu/valgrind/default.supp==53602== embedded gdbserver: 
reading from /tmp/vgdb-pipe-from-vgdb-to-53602-by-zak-on-???==53602== embedded 
gdbserver: writing to   
/tmp/vgdb-pipe-to-vgdb-from-53602-by-zak-on-???==53602== embedded gdbserver: 
shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-53602-by-zak-on-???==53602== 
==53602== TO CONTROL THIS PROCESS USING vgdb (which you probably==53602== don't 
want to do, unless you know exactly what you're doing,==53602== or are doing 
some strange experiment):==53602==   /usr/bin/vgdb --pid=53602 
...command...==53602== ==53602== TO DEBUG THIS PROCESS USING GDB: start GDB 
like this==53602==   /path/to/gdb /bin/bash==53602== and then give GDB the 
following command==53602==   target remote | /usr/bin/vgdb --pid=53602==53602== 
--pid is optional if only one valgrind process is running==53602== --53602-- 
REDIR: 0x4023b00 (ld-linux-x86-64.so.2:strlen) redirected to 0x580ccb72 
(???)--53602-- REDIR: 0x40238d0 (ld-linux-x86-64.so.2:index) redirected to 
0x580ccb8c (???)--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so--53602--    
object doesn't have a symbol table--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so--53602--   
 object doesn't have a symbol table==53602== WARNING: new redirection conflicts 
with existing -- ignoring it--53602--     old: 0x04023b00 (strlen              
) R-> (0000.0) 0x580ccb72 ???--53602--     new: 0x04023b00 (strlen              
) R-> (2007.0) 0x04840060 strlen--53602-- REDIR: 0x40202e0 
(ld-linux-x86-64.so.2:strcmp) redirected to 0x4840fd0 (strcmp)--53602-- REDIR: 
0x4024060 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4844af0 
(mempcpy)--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/libtinfo.so.6.2--53602--    object doesn't have a 
symbol table--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/libdl-2.32.so--53602--   Considering 
/usr/lib/x86_64-linux-gnu/libdl-2.32.so ..--53602--   .. CRC mismatch (computed 
0592691b wanted e69b33c5)--53602--   Considering 
/lib/x86_64-linux-gnu/libdl-2.32.so ..--53602--   .. CRC mismatch (computed 
0592691b wanted e69b33c5)--53602--   Considering 
/usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.32.so ..--53602--   .. CRC is 
valid--53602-- Reading syms from 
/usr/lib/x86_64-linux-gnu/libc-2.32.so--53602--   Considering 
/usr/lib/x86_64-linux-gnu/libc-2.32.so ..--53602--   .. CRC mismatch (computed 
2798f119 wanted a3907336)--53602--   Considering 
/lib/x86_64-linux-gnu/libc-2.32.so ..--53602--   .. CRC mismatch (computed 
2798f119 wanted a3907336)--53602--   Considering 
/usr/lib/debug/lib/x86_64-linux-gnu/libc-2.32.so ..--53602--   .. CRC is 
valid--53602-- REDIR: 0x49381f0 (libc.so.6:memmove) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937680 (libc.so.6:strncpy) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4938530 
(libc.so.6:strcasecmp) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4937120 (libc.so.6:strcat) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49376e0 (libc.so.6:rindex) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49399f0 
(libc.so.6:rawmemchr) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4954150 (libc.so.6:wmemchr) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4953c90 (libc.so.6:wcscmp) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4938350 
(libc.so.6:mempcpy) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4938180 (libc.so.6:bcmp) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937610 (libc.so.6:strncmp) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49371d0 (libc.so.6:strcmp) 
redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49382c0 
(libc.so.6:memset) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4953c50 (libc.so.6:wcschr) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937570 (libc.so.6:strnlen) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49372b0 
(libc.so.6:strcspn) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4938580 (libc.so.6:strncasecmp) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937250 (libc.so.6:strcpy) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49386d0 
(libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49553d0 (libc.so.6:wcsnlen) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4953cd0 (libc.so.6:wcscpy) 
redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937720 
(libc.so.6:strpbrk) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4937180 (libc.so.6:index) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937530 (libc.so.6:strlen) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x493fee0 
(libc.so.6:memrchr) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x49385d0 (libc.so.6:strcasecmp_l) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4938140 (libc.so.6:memchr) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4953da0 (libc.so.6:wcslen) 
redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4937850 
(libc.so.6:strspn) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x49384d0 (libc.so.6:stpncpy) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4938470 (libc.so.6:stpcpy) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4939a30 
(libc.so.6:strchrnul) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4938620 (libc.so.6:strncasecmp_l) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49375b0 (libc.so.6:strncat) redirected 
to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49c2500 
(libc.so.6:__memcpy_chk) redirected to 0x48321d0 (_vgnU_ifunc_wrapper)--53602-- 
REDIR: 0x4938060 (libc.so.6:strstr) redirected to 0x48321d0 
(_vgnU_ifunc_wrapper)--53602-- REDIR: 0x49c25d0 (libc.so.6:__memmove_chk) 
redirected to 0x48321d0 (_vgnU_ifunc_wrapper)==53602== WARNING: new redirection 
conflicts with existing -- ignoring it--53602--     old: 0x04a20170 
(__memcpy_chk_avx_una) R-> (2030.0) 0x04844be0 __memcpy_chk--53602--     new: 
0x04a20170 (__memcpy_chk_avx_una) R-> (2024.0) 0x048445a0 
__memmove_chk--53602-- REDIR: 0x4953e40 (libc.so.6:wcsncmp) redirected to 
0x48321d0 (_vgnU_ifunc_wrapper)--53602-- REDIR: 0x4a1cfa0 
(libc.so.6:__strrchr_avx2) redirected to 0x483fa10 (rindex)--53602-- REDIR: 
0x4a18660 (libc.so.6:__strcmp_avx2) redirected to 0x4840ed0 (strcmp)--53602-- 
REDIR: 0x4a1d170 (libc.so.6:__strlen_avx2) redirected to 0x483ff40 
(strlen)--53602-- REDIR: 0x4a18aa0 (libc.so.6:__strncmp_avx2) redirected to 
0x4840670 (strncmp)--53602-- REDIR: 0x4a1cb80 (libc.so.6:__strchr_avx2) 
redirected to 0x483fbf0 (index)--53602-- REDIR: 0x4932b70 (libc.so.6:free) 
redirected to 0x483d9d0 (free)--53602-- REDIR: 0x4932560 (libc.so.6:malloc) 
redirected to 0x483c780 (malloc)--53602-- REDIR: 0x4a1e6b0 
(libc.so.6:__strcpy_avx2) redirected to 0x4840090 (strcpy)--53602-- REDIR: 
0x4a20180 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x4843ac0 
(memmove)--53602-- REDIR: 0x4a1d310 (libc.so.6:__strnlen_avx2) redirected to 
0x483fee0 (strnlen)--53602-- REDIR: 0x4a1cdb0 (libc.so.6:__strchrnul_avx2) 
redirected to 0x4844610 (strchrnul)--53602-- REDIR: 0x49c28d0 
(libc.so.6:__strcpy_chk) redirected to 0x4844690 (__strcpy_chk)--53602-- REDIR: 
0x4932f20 (libc.so.6:realloc) redirected to 0x483ef30 (realloc)--53602-- REDIR: 
0x4a20600 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x48439b0 
(memset)Am I leaking?==53602== ==53602== HEAP SUMMARY:==53602==     in use at 
exit: 43,186 bytes in 634 blocks==53602==   total heap usage: 668 allocs, 34 
frees, 46,360 bytes allocated==53602== ==53602== Searching for pointers to 634 
not-freed blocks==53602== Checked 190,472 bytes==53602== ==53602== 2 bytes in 1 
blocks are definitely lost in loss record 10 of 264==53602==    at 0x483C7F3: 
malloc (in 
/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)==53602==  
  by 0x198523: xmalloc (in /usr/bin/bash)==53602==    by 0x19199E: 
set_default_locale (in /usr/bin/bash)==53602==    by 0x136C8A: main (in 
/usr/bin/bash)==53602== ==53602== LEAK SUMMARY:==53602==    definitely lost: 2 
bytes in 1 blocks==53602==    indirectly lost: 0 bytes in 0 blocks==53602==     
 possibly lost: 0 bytes in 0 blocks==53602==    still reachable: 43,184 bytes 
in 633 blocks==53602==         suppressed: 0 bytes in 0 blocks==53602== 
Reachable blocks (those to which a pointer was found) are not shown.==53602== 
To see them, rerun with: --leak-check=full --show-leak-kinds=all==53602== 
==53602== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)    On 
Tuesday, June 15, 2021, 08:16:02 AM CDT, Chet Ramey <chet.ramey@case.edu> 
wrote:  
 
 On 6/12/21 12:16 PM, Zachary Fields via Bug reports for the GNU Bourne 
Again SHell wrote:

> LEAK SUMMARY:        ==1365336==    definitely lost: 12 bytes in 1 blocks     
>    ==1365336==    

How about more details fromn valgrind about where it thinks the leak is?


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
        ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/
  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]