From 5eeb372418466920cad237a89846556453bd91ca Mon Sep 17 00:00:00 2001 From: taoyuanyuan Date: Sun, 19 May 2019 23:23:04 +0000 Subject: [PATCH] internal/poll: avoid memory leak in Writev The chunks that were referenced by fd.iovecs would not be GC. Change-Id: I7bfcb91a3fef57a4a1861168e9cd3ab55ce1334e GitHub-Last-Rev: e0b7f68447441fd89ed1a6e8aa37e2084fd863b2 GitHub-Pull-Request: golang/go#32138 Reviewed-on: https://go-review.googlesource.com/c/go/+/178037 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/internal/poll/writev.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/internal/poll/writev.go b/src/internal/poll/writev.go index a48a38be08..6050d1f642 100644 --- a/src/internal/poll/writev.go +++ b/src/internal/poll/writev.go @@ -64,6 +64,9 @@ func (fd *FD) Writev(v *[][]byte) (int64, error) { TestHookDidWritev(int(wrote)) n += int64(wrote) consume(v, int64(wrote)) + for i := range iovecs { + iovecs[i] = syscall.Iovec{} + } if err != nil { if err.(syscall.Errno) == syscall.EAGAIN { if err = fd.pd.waitWrite(fd.isFile); err == nil { -- 2.50.0