Description
When a port is destroyed, grout never releases that interface's IPv6 addresses or multicast memberships - iface_port_fini frees neither.
The leaked entries accumulate in the fixed address mempool (GROUT_MEMPOOL_CHUNK_SIZE whose default is 2047). Under enough port create/destroy churn the pool fills, and the next port's automatic EUI-64 link-local can no longer be added:
ERR: ADDRESS: ip6_iface_llocal_init: iface_addr_add: No space left on device (28)
You can use the gist in https://gist.github.com/maiqueb/86e5609ac2cb8a13db0af552515e1bc5 to reproduce it locally, by executing:
CYCLES=3000 ./grout-leak-repro/repro.sh
Version
0.17.1-0.g5226d74f
Description
When a port is destroyed, grout never releases that interface's IPv6 addresses or multicast memberships -
iface_port_finifrees neither.The leaked entries accumulate in the fixed address mempool (
GROUT_MEMPOOL_CHUNK_SIZEwhose default is 2047). Under enough port create/destroy churn the pool fills, and the next port's automatic EUI-64 link-local can no longer be added:You can use the gist in https://gist.github.com/maiqueb/86e5609ac2cb8a13db0af552515e1bc5 to reproduce it locally, by executing:
Version
0.17.1-0.g5226d74f