]> Cypherpunks repositories - gostls13.git/commit
fmt: fix usage of sync.Pool
authorJoe Tsai <joetsai@digital-static.net>
Tue, 18 Sep 2018 19:52:39 +0000 (12:52 -0700)
committerJoe Tsai <thebrokentoaster@gmail.com>
Wed, 19 Sep 2018 18:01:04 +0000 (18:01 +0000)
commite82d152e66e81812a5c6ebf075cc99efd2602b19
treeebcc63f40fa75e8fe4e118a2e4ae1150c4665366
parent620bd5a3bc640f60a00d8b49c27c51e8ce67e67b
fmt: fix usage of sync.Pool

The current usage of sync.Pool is leaky because it stores an arbitrary
sized buffer into the pool. However, sync.Pool assumes that all items in the
pool are interchangeable from a memory cost perspective. Due to the unbounded
size of a buffer that may be added, it is possible for the pool to eventually
pin arbitrarily large amounts of memory in a live-lock situation.

As a simple fix, we just set a maximum size that we permit back into the pool.

We do not need to fix the use of a sync.Pool in scan.go since the free method
has always enforced a maximum capacity since the first commit of the scan logic.

Fixes #27740
Updates #23199

Change-Id: I875278f7dba42625405df36df3e9b028252ce5e3
Reviewed-on: https://go-review.googlesource.com/136116
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/fmt/print.go