solo-io / bumblebee

Get eBPF programs running from the cloud to the kernel in 1 line of bash
Apache License 2.0
1.26k stars 78 forks source link

invalid argument Error while running ebpf code having ring buffer using bee #56

Open arayu05 opened 2 years ago

arayu05 commented 2 years ago

Version

0.0.9

Linux Version

ubuntu 18.04 lts , Kernel version : 5.4.0-91-generic

Describe the bug

I successfully build tcpconnect example using bee build tcpconnect.c tcp:v2 But while running it using bee run tcp:v2 getting below error:

  SUCCESS  Fetching program from registry: tcp:v2                                                                                               
  ERROR   Loading BPF program and maps into Kernel                                                                                             
Error: map events_ring: map create: invalid argument
2022/01/11 14:42:58 exiting: map events_ring: map create: invalid argument

I also tested a hash map and ring buffer test ebpf codes separately. I saw that the code using hash_map ran successfully but the one with ring buffer is giving the same error while running.

Steps to reproduce the bug

  1. bee build tcpconnect.c tcp:v2
  2. bee run tcp:v2

Expected Behavior

It shall run successfully.

Additional Context

No response

lgadban commented 2 years ago

Thanks for the report! I can reproduce it and will update this issue with my findings

lgadban commented 2 years ago

It should have been more obvious to me initially, but this is because the BPF_MAP_TYPE_RINGBUF is only available in Linux 5.8+.

We should probably fix the standard tcpconnect example to be able to run on older kernels.

arayu05 commented 2 years ago

Ok. Thanks for the response. Will track the progress on the bug and try again later.

krisztianfekete commented 1 year ago

The fix for issues like this should be to leverage the new compat layer that could fall back to legacy map types if the new ones are not supported in the kernel running the code, like this: https://github.com/iovisor/bcc/pull/4282

For that, we should add support for perfbuf first.