From: Tracey Emery Subject: fix ibuf memory leak To: gameoftrees@openbsd.org Date: Fri, 18 Jun 2021 16:21:22 -0600 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;