slackhq/nebula · error
failed to open udp socket: %w
Error message
failed to open udp socket: %w
What it means
Wrapping error in the Darwin UDP listener: uc.SyscallConn() failed on an already-listening net.UDPConn, so the raw fd needed for sendmmsg/recvmmsg-style control could not be obtained. Rare plumbing failure between netpoll and syscall; cause preserved with %w.
Source
Thrown at udp/udp_darwin.go:42
sysFd uintptr
l *slog.Logger
}
var _ Conn = &StdConn{}
func NewListener(l *slog.Logger, s Settings) (Conn, error) {
lc := NewListenConfig(s.Multi)
pc, err := lc.ListenPacket(context.TODO(), "udp", s.Listen.String())
if err != nil {
return nil, err
}
if uc, ok := pc.(*net.UDPConn); ok {
c := &StdConn{UDPConn: uc, l: l}
rc, err := uc.SyscallConn()
if err != nil {
return nil, fmt.Errorf("failed to open udp socket: %w", err)
}
err = rc.Control(func(fd uintptr) {
c.sysFd = fd
})
if err != nil {
return nil, fmt.Errorf("failed to get udp fd: %w", err)
}
la, err := c.LocalAddr()
if err != nil {
return nil, err
}
c.isV4 = la.Addr().Is4()
return c, nil
}
View on GitHub (pinned to dd8f660c0a)
Solutions
- Retry creating the listener
- Report with Go version and macOS version if persistent — likely a runtime/netpoll issue
- Close and reopen the socket if fd exhaustion is suspected
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at udp/udp_darwin.go:42 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of slackhq/nebula@dd8f660c0a (2026-09-03).
Data as JSON: /api/errors/d1e28ce03181b10f.
Report an issue: GitHub.