emacs-bug-tracker
[Top][All Lists]
Advanced

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

bug#43040: closed (grep 3.4: memory leak)


From: GNU bug Tracking System
Subject: bug#43040: closed (grep 3.4: memory leak)
Date: Fri, 11 Sep 2020 22:54:02 +0000

Your message dated Fri, 11 Sep 2020 15:53:15 -0700
with message-id <90f13dd5-6cda-337f-7e89-99635425691c@cs.ucla.edu>
and subject line Re: bug#43040: grep 3.4: memory leak
has caused the debbugs.gnu.org bug report #43040,
regarding grep 3.4: memory leak
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
43040: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=43040
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: grep 3.4: memory leak Date: Tue, 25 Aug 2020 17:17:55 +0200
Dear maintainer,
grep 3.4 is very slow and uses a lot of memory when executed with the attached inputs:

time ./grep-3.4/build/bin/grep -f ./mem_leak ./la_divin.txt
[...]
real 0m0,442s
user 0m0,117s
sys 0m0,326s

mem usage: ~1.5GB

it seems to be a regression, since grep 3.3 runs smoothly on the same inputs:

time ./grep-3.3/build/bin/grep -f ./mem_leak ./la_divin.txt
[...]
real 0m0,016s
user 0m0,016s
sys 0m0,000s

mem usage: ~300KB

valgrind detects some memory leaks on grep 3.4, this is its output:
==156624== Memcheck, a memory error detector
==156624== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==156624== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==156624== Command: ./grep-3.4/build/bin/grep -f ./mem_leak ./la_divin.txt
==156624==
==156624==
==156624== HEAP SUMMARY:
==156624==     in use at exit: 3,762,378,749 bytes in 281,181 blocks
==156624==   total heap usage: 396,668 allocs, 115,487 frees, 3,789,426,889 bytes allocated
==156624==
==156624== 8 bytes in 1 blocks are possibly lost in loss record 2 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x1300D2: analyze (regcomp.c:1169)
==156624==    by 0x1300D2: re_compile_internal (regcomp.c:795)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 8 bytes in 1 blocks are possibly lost in loss record 3 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x1255BA: re_node_set_alloc (regex_internal.c:972)
==156624==    by 0x1255BA: calc_eclosure_iter (regcomp.c:1700)
==156624==    by 0x130316: calc_eclosure (regcomp.c:1677)
==156624==    by 0x130316: analyze (regcomp.c:1204)
==156624==    by 0x130316: re_compile_internal (regcomp.c:795)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 8 bytes in 1 blocks are possibly lost in loss record 4 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x126009: re_node_set_init_copy (regex_internal.c:1033)
==156624==    by 0x1262D1: create_cd_newstate (regex_internal.c:1681)
==156624==    by 0x1262D1: re_acquire_state_context (regex_internal.c:1553)
==156624==    by 0x13091B: create_initial_state (regcomp.c:1050)
==156624==    by 0x13091B: re_compile_internal (regcomp.c:806)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 8 bytes in 1 blocks are possibly lost in loss record 5 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x123AAA: re_node_set_alloc (regex_internal.c:972)
==156624==    by 0x123AAA: register_state (regex_internal.c:1574)
==156624==    by 0x126430: create_cd_newstate (regex_internal.c:1737)
==156624==    by 0x126430: re_acquire_state_context (regex_internal.c:1553)
==156624==    by 0x13091B: create_initial_state (regcomp.c:1050)
==156624==    by 0x13091B: re_compile_internal (regcomp.c:806)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 16 bytes in 1 blocks are possibly lost in loss record 17 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x12FD2D: init_dfa (regcomp.c:859)
==156624==    by 0x12FD2D: re_compile_internal (regcomp.c:758)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 16 bytes in 1 blocks are possibly lost in loss record 18 of 114
==156624==    at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x123B50: register_state (regex_internal.c:1589)
==156624==    by 0x126430: create_cd_newstate (regex_internal.c:1737)
==156624==    by 0x126430: re_acquire_state_context (regex_internal.c:1553)
==156624==    by 0x13091B: create_initial_state (regcomp.c:1050)
==156624==    by 0x13091B: re_compile_internal (regcomp.c:806)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 24 bytes in 1 blocks are possibly lost in loss record 34 of 114
==156624==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x12FD55: init_dfa (regcomp.c:866)
==156624==    by 0x12FD55: re_compile_internal (regcomp.c:758)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 24 bytes in 1 blocks are possibly lost in loss record 35 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x1300F6: analyze (regcomp.c:1171)
==156624==    by 0x1300F6: re_compile_internal (regcomp.c:795)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 24 bytes in 1 blocks are possibly lost in loss record 36 of 114
==156624==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x130108: analyze (regcomp.c:1172)
==156624==    by 0x130108: re_compile_internal (regcomp.c:795)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 112 bytes in 1 blocks are possibly lost in loss record 54 of 114
==156624==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x1262B6: create_cd_newstate (regex_internal.c:1678)
==156624==    by 0x1262B6: re_acquire_state_context (regex_internal.c:1553)
==156624==    by 0x13091B: create_initial_state (regcomp.c:1050)
==156624==    by 0x13091B: re_compile_internal (regcomp.c:806)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 128 bytes in 1 blocks are possibly lost in loss record 64 of 114
==156624==    at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x11FFB9: xrealloc (xmalloc.c:61)
==156624==    by 0x114A9B: xpalloc (dfa.c:818)
==156624==    by 0x114CD3: realloc_trans_if_necessary (dfa.c:2853)
==156624==    by 0x11988B: dfaexec_main (dfa.c:3391)
==156624==    by 0x10E082: EGexecute (dfasearch.c:416)
==156624==    by 0x10C7C5: main (grep.c:2905)
==156624==
==156624== 232 bytes in 1 blocks are possibly lost in loss record 68 of 114
==156624==    at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x130B24: re_compile_internal (regcomp.c:750)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== 25,222 bytes in 1 blocks are possibly lost in loss record 78 of 114
==156624==    at 0x483DFAF: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x11FFB9: xrealloc (xmalloc.c:61)
==156624==    by 0x10C024: main (grep.c:2598)
==156624==
==156624== 10,379,152 (5,013,056 direct, 5,366,096 indirect) bytes in 21,608 blocks are definitely lost in loss record 113 of 114
==156624==    at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==156624==    by 0x130B24: re_compile_internal (regcomp.c:750)
==156624==    by 0x130DDB: rpl_re_compile_pattern (regcomp.c:230)
==156624==    by 0x10D3E6: regex_compile (dfasearch.c:160)
==156624==    by 0x10D7AC: GEAcompile (dfasearch.c:247)
==156624==    by 0x10C782: main (grep.c:2900)
==156624==
==156624== LEAK SUMMARY:
==156624==    definitely lost: 5,013,056 bytes in 21,608 blocks
==156624==    indirectly lost: 5,366,096 bytes in 216,158 blocks
==156624==      possibly lost: 25,830 bytes in 13 blocks
==156624==    still reachable: 3,751,973,767 bytes in 43,402 blocks
==156624==                       of which reachable via heuristic:
==156624==                         newarray           : 112 bytes in 1 blocks
==156624==         suppressed: 0 bytes in 0 blocks
==156624== Reachable blocks (those to which a pointer was found) are not shown.
==156624== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==156624==
==156624== For lists of detected and suppressed errors, rerun with: -s
==156624== ERROR SUMMARY: 14 errors from 14 contexts (suppressed: 0 from 0)

---
Regards,
Luca Borzacchiello

Attachment: la_divin.txt
Description: Text document

Attachment: mem_leak
Description: Binary data


--- End Message ---
--- Begin Message --- Subject: Re: bug#43040: grep 3.4: memory leak Date: Fri, 11 Sep 2020 15:53:15 -0700 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
On 9/7/20 11:18 PM, Shlomi Fish wrote:

Thanks, Paul! I can confirm that the latest git master version of gnu grep
(which incorporates the patches) is faster than 3.4.

Thanks for checking; closing the bug report.



--- End Message ---

reply via email to

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