You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2023/10/16 22:27:42 UTC
[trafficserver] branch master updated: LSan: Fix memory leak of test_proxy_hdrs (#10542)
This is an automated email from the ASF dual-hosted git repository.
masaori pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 344950e997 LSan: Fix memory leak of test_proxy_hdrs (#10542)
344950e997 is described below
commit 344950e99736681e58e6a2455fb306862570c2ed
Author: Masaori Koshiba <ma...@apache.org>
AuthorDate: Tue Oct 17 07:27:36 2023 +0900
LSan: Fix memory leak of test_proxy_hdrs (#10542)
* LSan: Fix memory leak of test_proxy_hdrs
* Suppress test_http_hdr_print_and_copy_aux leak
---
ci/asan_leak_suppression/unit_tests.txt | 2 ++
proxy/hdrs/Makefile.am | 1 +
proxy/hdrs/unit_tests/test_Hdrs.cc | 5 +++++
proxy/http/unit_tests/test_HttpTransact.cc | 21 +++++++++++++++++++++
4 files changed, 29 insertions(+)
diff --git a/ci/asan_leak_suppression/unit_tests.txt b/ci/asan_leak_suppression/unit_tests.txt
index f1848dacd5..da34e83c61 100644
--- a/ci/asan_leak_suppression/unit_tests.txt
+++ b/ci/asan_leak_suppression/unit_tests.txt
@@ -6,3 +6,5 @@ leak:CRYPTO_realloc
leak:ConsCell
# PR#10295
leak:pcre_jit_stack_alloc
+# PR#10541
+leak:test_http_hdr_print_and_copy_aux
diff --git a/proxy/hdrs/Makefile.am b/proxy/hdrs/Makefile.am
index 670317c1b2..b1691d6610 100644
--- a/proxy/hdrs/Makefile.am
+++ b/proxy/hdrs/Makefile.am
@@ -72,6 +72,7 @@ check_PROGRAMS = \
test_XPACK
TESTS = $(check_PROGRAMS)
+TESTS_ENVIRONMENT = LSAN_OPTIONS=suppressions=$(abs_top_srcdir)/ci/asan_leak_suppression/unit_tests.txt
test_proxy_hdrs_CPPFLAGS = $(AM_CPPFLAGS) \
-I$(abs_top_srcdir)/lib/catch2
diff --git a/proxy/hdrs/unit_tests/test_Hdrs.cc b/proxy/hdrs/unit_tests/test_Hdrs.cc
index 4f70c2d063..265edb0993 100644
--- a/proxy/hdrs/unit_tests/test_Hdrs.cc
+++ b/proxy/hdrs/unit_tests/test_Hdrs.cc
@@ -32,6 +32,7 @@
#include "tscore/Regex.h"
#include "tscore/ink_time.h"
#include "tscore/Random.h"
+#include "tscpp/util/PostScript.h"
#include "catch.hpp"
@@ -280,6 +281,7 @@ test_http_hdr_null_char(int testnum, const char *request, const char * /*request
{
int err;
HTTPHdr hdr;
+ ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
HTTPParser parser;
const char *start;
char cpy_buf[2048];
@@ -308,6 +310,7 @@ test_http_hdr_null_char(int testnum, const char *request, const char * /*request
break;
}
}
+
if (err != PARSE_RESULT_ERROR) {
std::printf("FAILED: (test #%d) no parse error parsing request with null char\n", testnum);
return (0);
@@ -320,6 +323,7 @@ test_http_hdr_ctl_char(int testnum, const char *request, const char * /*request_
{
int err;
HTTPHdr hdr;
+ ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
HTTPParser parser;
const char *start;
char cpy_buf[2048];
@@ -571,6 +575,7 @@ TEST_CASE("HdrTest", "[proxy][hdrtest]")
};
MIMEHdr hdr;
+ ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
MIMEParser parser;
mime_parser_init(&parser);
diff --git a/proxy/http/unit_tests/test_HttpTransact.cc b/proxy/http/unit_tests/test_HttpTransact.cc
index 518e173236..25cf06ce9c 100644
--- a/proxy/http/unit_tests/test_HttpTransact.cc
+++ b/proxy/http/unit_tests/test_HttpTransact.cc
@@ -22,7 +22,10 @@
*/
#include <string_view>
+
#include "tscore/Diags.h"
+#include "tscpp/util/PostScript.h"
+
#include "HttpTransact.h"
#include "records/I_RecordsConfig.h"
@@ -40,6 +43,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr hdr1;
HTTPHdr hdr2;
+ ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+ ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
MIMEField *field;
const char *str;
int len;
@@ -125,6 +131,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr hdr1;
HTTPHdr hdr2;
+ ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+ ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
MIMEField *field;
const char *str;
int len;
@@ -203,6 +212,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr hdr1;
HTTPHdr hdr2;
+ ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+ ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
MIMEField *field;
const char *str;
int len;
@@ -281,6 +293,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr hdr1;
HTTPHdr hdr2;
+ ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+ ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
MIMEField *field;
const char *str;
int len;
@@ -359,6 +374,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr hdr1;
HTTPHdr hdr2;
+ ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+ ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
MIMEField *field;
const char *str;
int len;
@@ -447,6 +465,9 @@ TEST_CASE("HttpTransact", "[http]")
{
HTTPHdr cached_headers;
HTTPHdr response_headers;
+ ts::PostScript cached_headers_defer([&]() -> void { cached_headers.destroy(); });
+ ts::PostScript response_headers_defer([&]() -> void { response_headers.destroy(); });
+
MIMEField *field;
const char *str;
int len;