[MERGED] libosmocore[master]: bssgp_fc_test: sanitizer: free msgb context when done

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Mon Nov 20 16:23:10 UTC 2017


Neels Hofmeyr has submitted this change and it was merged.

Change subject: bssgp_fc_test: sanitizer: free msgb context when done
......................................................................


bssgp_fc_test: sanitizer: free msgb context when done

Print remaining msgbs when done, then free the entire tall_msgb_context. To be
able to do that, call msgb_talloc_ctx_init() and use its return value.

A subsequent patch will fix a known mem leak and add assertions for 0b in 1
blocks remaining in the tall_msgb_context.

Helps fix sanitizer build on debian 9.

Change-Id: I67d347ab2642b0bfc27b21b44231a7f3146ff641
---
M tests/gb/bssgp_fc_test.c
M tests/gb/bssgp_fc_tests.ok
2 files changed, 12 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved



diff --git a/tests/gb/bssgp_fc_test.c b/tests/gb/bssgp_fc_test.c
index 6e4f747..7a75a4d 100644
--- a/tests/gb/bssgp_fc_test.c
+++ b/tests/gb/bssgp_fc_test.c
@@ -130,6 +130,7 @@
 	uint32_t pdu_length = 10; /* octets */
 	uint32_t pdu_count = 20; /* messages */
 	int c;
+	void *tall_msgb_ctx;
 
 	static const struct option long_options[] = {
 		{ "bucket-size-max", 1, 0, 's' },
@@ -144,6 +145,8 @@
 	osmo_init_logging(&info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
+
+	tall_msgb_ctx = msgb_talloc_ctx_init(NULL, 0);
 
 	while ((c = getopt_long(argc, argv, "s:r:d:l:c:",
 				long_options, NULL)) != -1) {
@@ -184,6 +187,11 @@
 		bucket_leak_rate, max_queue_depth, pdu_length, pdu_count);
 	test_fc(bucket_size_max, bucket_leak_rate, max_queue_depth,
 		pdu_length, pdu_count);
+	printf("msgb ctx: %zu b in %zu blocks (0 b in 1 block == just the context)\n",
+	       talloc_total_size(tall_msgb_ctx),
+	       talloc_total_blocks(tall_msgb_ctx));
+	/* KNOWN BUG: expecting 0b in 1 block, but a full queue is still a mem leak */
+	talloc_free(tall_msgb_ctx);
 	printf("===== BSSGP flow-control test END\n\n");
 
 	exit(EXIT_SUCCESS);
diff --git a/tests/gb/bssgp_fc_tests.ok b/tests/gb/bssgp_fc_tests.ok
index f8fca3c..d146843 100644
--- a/tests/gb/bssgp_fc_tests.ok
+++ b/tests/gb/bssgp_fc_tests.ok
@@ -56,6 +56,7 @@
 30: FC OUT Nr 13
 40: FC OUT Nr 14
 50: FC OUT Nr 15
+msgb ctx: 685 b in 6 blocks (0 b in 1 block == just the context)
 ===== BSSGP flow-control test END
 
 ===== BSSGP flow-control test START
@@ -121,6 +122,7 @@
 80: FC OUT Nr 18
 90: FC OUT Nr 19
 100: FC OUT Nr 20
+msgb ctx: 0 b in 1 blocks (0 b in 1 block == just the context)
 ===== BSSGP flow-control test END
 
 ===== BSSGP flow-control test START
@@ -166,6 +168,7 @@
  -> -5: PDU too large, msg dropped.
 0: FC IN Nr 20
  -> -5: PDU too large, msg dropped.
+msgb ctx: 0 b in 1 blocks (0 b in 1 block == just the context)
 ===== BSSGP flow-control test END
 
 ===== BSSGP flow-control test START
@@ -226,5 +229,6 @@
 30: FC OUT Nr 13
 40: FC OUT Nr 14
 50: FC OUT Nr 15
+msgb ctx: 685 b in 6 blocks (0 b in 1 block == just the context)
 ===== BSSGP flow-control test END
 

-- 
To view, visit https://gerrit.osmocom.org/4871
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I67d347ab2642b0bfc27b21b44231a7f3146ff641
Gerrit-PatchSet: 3
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list