New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix potential memory leaks when errors happen #857
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
==3709953== HEAP SUMMARY: ==3709953== in use at exit: 276,541 bytes in 23 blocks ==3709953== total heap usage: 29 allocs, 6 frees, 280,682 bytes allocated ==3709953== ==3709953== 1 bytes in 1 blocks are still reachable in loss record 1 of 23 ==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48E2BC3: ub_initstate (random.c:85) ==3709953== by 0x489B067: ub_ctx_create_nopipe (libunbound.c:114) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ...... ==3709953== 8,192 bytes in 1 blocks are still reachable in loss record 22 of 23 ==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48E427B: regional_create_custom (regional.c:94) ==3709953== by 0x48DEA03: edns_strings_create (edns.c:57) ==3709953== by 0x489B0F3: ub_ctx_create_nopipe (libunbound.c:157) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ==3709953== 262,144 bytes in 1 blocks are still reachable in loss record 23 of 23 ==3709953== at 0x486933C: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48C826F: config_create (config_file.c:179) ==3709953== by 0x48C85AF: config_create_forlib (config_file.c:383) ==3709953== by 0x489B0BB: ub_ctx_create_nopipe (libunbound.c:130) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ==3709953== LEAK SUMMARY: ==3709953== definitely lost: 0 bytes in 0 blocks ==3709953== indirectly lost: 0 bytes in 0 blocks ==3709953== possibly lost: 0 bytes in 0 blocks ==3709953== still reachable: 276,541 bytes in 23 blocks ==3709953== suppressed: 0 bytes in 0 blocks ==3709953== ==3709953== For lists of detected and suppressed errors, rerun with: -s ==3709953== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Signed-off-by: eaglegai <eaglegai@163.com>
==1927474== Memcheck, a memory error detector ==1927474== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==1927474== Using Valgrind-3.16.0 and LibVEX; rerun with -h for copyright info ==1927474== Command: unbound-streamtcp -f localhost ==1927474== fatal: bad server specs 'localhost' ==1927474== ==1927474== HEAP SUMMARY: ==1927474== in use at exit: 131,186 bytes in 4 blocks ==1927474== total heap usage: 5 allocs, 1 frees, 132,210 bytes allocated ==1927474== ==1927474== 40 bytes in 1 blocks are still reachable in loss record 1 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0573: sldns_buffer_new (sbuffer.c:21) ==1927474== by 0x11ECED: send_em (streamtcp.c:374) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 40 bytes in 1 blocks are still reachable in loss record 2 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0573: sldns_buffer_new (sbuffer.c:21) ==1927474== by 0x11ECFA: send_em (streamtcp.c:375) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 65,553 bytes in 1 blocks are still reachable in loss record 3 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0583: sldns_buffer_new (sbuffer.c:27) ==1927474== by 0x11ECED: send_em (streamtcp.c:374) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 65,553 bytes in 1 blocks are still reachable in loss record 4 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0583: sldns_buffer_new (sbuffer.c:27) ==1927474== by 0x11ECFA: send_em (streamtcp.c:375) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== LEAK SUMMARY: ==1927474== definitely lost: 0 bytes in 0 blocks ==1927474== indirectly lost: 0 bytes in 0 blocks ==1927474== possibly lost: 0 bytes in 0 blocks ==1927474== still reachable: 131,186 bytes in 4 blocks ==1927474== suppressed: 0 bytes in 0 blocks ==1927474== ==1927474== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Signed-off-by: eaglegai <eaglegai@163.com>
eaglegai
changed the title
fix potential memory leak in unbound-host when errors happen
fix potential memory leaks when errors happen
Mar 7, 2023
@wcawijngaards @gthess could you review these commits? |
gthess
added a commit
that referenced
this pull request
Jul 21, 2023
gthess
added a commit
that referenced
this pull request
Jul 21, 2023
Thanks for this, the code looks cleaner that way. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
==3709953== HEAP SUMMARY:
==3709953== in use at exit: 276,541 bytes in 23 blocks
==3709953== total heap usage: 29 allocs, 6 frees, 280,682 bytes allocated
==3709953==
==3709953== 1 bytes in 1 blocks are still reachable in loss record 1 of 23
==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so)
==3709953== by 0x48E2BC3: ub_initstate (random.c:85)
==3709953== by 0x489B067: ub_ctx_create_nopipe (libunbound.c:114)
==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180)
==3709953== by 0x10E203: main (unbound-host.c:433)
==3709953==
......
==3709953== 8,192 bytes in 1 blocks are still reachable in loss record 22 of 23
==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so)
==3709953== by 0x48E427B: regional_create_custom (regional.c:94)
==3709953== by 0x48DEA03: edns_strings_create (edns.c:57)
==3709953== by 0x489B0F3: ub_ctx_create_nopipe (libunbound.c:157)
==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180)
==3709953== by 0x10E203: main (unbound-host.c:433)
==3709953==
==3709953== 262,144 bytes in 1 blocks are still reachable in loss record 23 of 23
==3709953== at 0x486933C: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so)
==3709953== by 0x48C826F: config_create (config_file.c:179)
==3709953== by 0x48C85AF: config_create_forlib (config_file.c:383)
==3709953== by 0x489B0BB: ub_ctx_create_nopipe (libunbound.c:130)
==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180)
==3709953== by 0x10E203: main (unbound-host.c:433)
==3709953==
==3709953== LEAK SUMMARY:
==3709953== definitely lost: 0 bytes in 0 blocks
==3709953== indirectly lost: 0 bytes in 0 blocks
==3709953== possibly lost: 0 bytes in 0 blocks
==3709953== still reachable: 276,541 bytes in 23 blocks
==3709953== suppressed: 0 bytes in 0 blocks
==3709953==
==3709953== For lists of detected and suppressed errors, rerun with: -s
==3709953== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)