"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Tracey Emery <tracey@traceyemery.net>
Subject:
fix ibuf memory leak
To:
gameoftrees@openbsd.org
Date:
Fri, 18 Jun 2021 16:21:22 -0600

Download raw body.

Thread
Hello,

While testing gotwebd, I noticed memory growing quite rapidly. After an
eternity if debugging, I finally tracked it down to an unfreed ibuf. The
ibuf is opened in start_pack_privsep_child in lib/object.c. This frees
it in got_pack_stop_privsep_chil in lib/pack.c, right before
pack->privsep_child is freed.

When reloading the gotwebd index, this seems to stop the memory bloat.

ok?

-- 

Tracey Emery

diff 779e1159b25b2aa115e6b42f51003b7e2fa7c06b /home/tracey/src/got
blob - 137217342b5f0eb662a63182136a6750ffa7e2af
file + lib/pack.c
--- lib/pack.c
+++ lib/pack.c
@@ -552,6 +552,7 @@ got_pack_stop_privsep_child(struct got_pack *pack)
 	err = got_privsep_wait_for_child(pack->privsep_child->pid);
 	if (close(pack->privsep_child->imsg_fd) == -1 && err == NULL)
 		err = got_error_from_errno("close");
+	free(pack->privsep_child->ibuf);
 	free(pack->privsep_child);
 	pack->privsep_child = NULL;
 	return err;