Skip to content

iface_port_fini leaks IPv6 addresses and multicast memberships leading to address mempool exhaustion (ENOSPC/EADDRINUSE on link-local add) #751

Description

@maiqueb

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageNeeds review and proper triage

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions