Open FutureMatt opened 4 months ago
It wasn't intentional. We added an eBPF program with more instructions than the others. Kernel 4.19 has a lower limit for the number of instructions in eBPF programs
Are there plans to try and support 4.x kernels again or should the minimum requirements listed in the readme be updated?
It uses eBPF to track container related events such as TCP connects, so the minimum supported Linux kernel version is 4.16.
It seems to be caused by this code, which will unfold two very long instructions.
SEC("tracepoint/syscalls/sys_enter_sendmmsg")
int sys_enter_sendmmsg(struct trace_event_raw_sys_enter_rw__stub* ctx) {
__u64 offset = 0;
#pragma unroll
for (int i = 0; i <= 1; i++) {
if (i >= ctx->size) {
break;
}
struct mmsghdr h = {};
if (bpf_probe_read(&h , sizeof(h), (void *)(ctx->buf + offset))) {
return 0;
}
offset += sizeof(h);
trace_enter_write(ctx, ctx->fd, 0, (char*)h.msg_hdr.msg_iov, 0, h.msg_hdr.msg_iovlen);
}
return 0;
}
I can't see anything obvious in the changelogs but it looks like at some point after
1.18.9
support for Linux 4.x Kernels was dropped. We currently run some clusters that have a combination of4.19.0-19
and5.10.0-29
kernels but the clusters with 4.x kernels are now failing do deploy the node agent with the following log output.