Skip to content

Commit d92fa30

Browse files
authored
better error log on socket filter fail error (#954)
1 parent 511fc69 commit d92fa30

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

pkg/ebpf/instrumenter.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ func (i *instrumenter) sockfilters(p Tracer) error {
321321
if i.metrics != nil {
322322
i.metrics.InstrumentationError(i.processName, imetrics.InstrumentationErrorAttachingSockFilter)
323323
}
324-
return fmt.Errorf("attaching socket filter: %w", err)
324+
return fmt.Errorf("attaching socket filter: %w", i.handleSockFilterErr(err, filter))
325325
}
326326

327327
p.AddCloser(&ebpfcommon.Filter{Fd: fd})
@@ -330,6 +330,21 @@ func (i *instrumenter) sockfilters(p Tracer) error {
330330
return nil
331331
}
332332

333+
func (i *instrumenter) handleSockFilterErr(originalErr error, filter *ebpf.Program) error {
334+
if !errors.Is(originalErr, unix.ENOMEM) {
335+
return originalErr
336+
}
337+
info, err := filter.Info()
338+
if err != nil {
339+
return fmt.Errorf("getting program info: %w", originalErr)
340+
}
341+
jitedSize, err := info.JitedSize()
342+
if err != nil {
343+
return fmt.Errorf("getting jited size: %w", originalErr)
344+
}
345+
return fmt.Errorf("%s, socket filter has a jited size of %d, consider increasing the value net.core.optmem_max kernel parameter to be larger then the program jited size, this will not affect existing sockets but only future ones created", originalErr.Error(), jitedSize)
346+
}
347+
333348
func attachSocketFilter(filter *ebpf.Program) (int, error) {
334349
fd, err := unix.Socket(unix.AF_PACKET, unix.SOCK_RAW, int(htons(unix.ETH_P_ALL)))
335350
if err == nil {

0 commit comments

Comments
 (0)