eBPF Verifier Repair
Naprawia odrzucenia weryfikatora eBPF z surowego, szczegółowego logu ładowania, najpierw dowód
Testowano · Działa
Co robi ten skill
Przepływ pracy naprawczego dla programów eBPF, których weryfikator jądra odmawia załadowania: odczytuje szczegółowy log weryfikatora, mapuje odrzuconą instrukcję z powrotem do wartości, która utraciła wymagany dowód, i wprowadza najmniejszą zmianę w kodzie źródłowym, która ją przywraca bez zmiany semantyki programu. Obejmuje packet bounds, nullable pointers, uninitialized stack, reference lifetime, scalar range i pointer provenance w libbpf C, Rust/Aya, libbpf-rs i BCC. Uruchamia się na verifier errors, -EACCES load failures, BPFix diagnostics i CI load logs.
Raport z testu
Testowano na własnym przypadku benchmarkowym repozytorium packet_checked_wrong_base_001, odczytując tylko błędny kod źródłowy i log weryfikatora. Bez umiejętności oczywistą naprawą jest poszerzenie strażnika z data+14 do data+15, co wycisza błąd i zachowuje błędny odczyt nagłówka; README przypadku wskazuje to jako błędną odpowiedź, a dołączony test nie przeszedłby kontroli ramki 14-bajtowej. Postępowanie zgodnie z zasadami raw-log-triage i Bounds umiejętności wygenerowało plik fixed.bpf.c maintainera niemal dosłownie — typowana baza ethhdr, strażnik na tym samym wskaźniku, który jest później używany — i przeszło wszystkie trzy predykaty źródłowe wyroczni benchmarkowej, które wersja bazowa nie przeszła 0 na 3. Dołączony extract_verifier_failure.py również działał czysto na prawdziwym logu 3.2KB, tnąc preambułę libbpf do rzeczywistego regionu PROG LOAD. Sam binarny bpfix jest opcjonalny i nigdy nie jest potrzebny dla tej ścieżki, ale klonowanie pobiera około 200MB.
Testowano: 2026-07-30 · Claude Code 2.x (agent harness)
Instalacja
git clone --depth 1 https://github.com/eunomia-bpf/bpfix.git mkdir -p ~/.claude/skills cd bpfix && cp -r skills/ebpf-verifier-repair ~/.claude/skills/ebpf-verifier-repair
Komendy i przykładowe prompty
/ebpf-verifier-repairNaprawia odrzucenia weryfikatora eBPF z surowego, szczegółowego logu ładowania, najpierw dowód
Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):
My XDP program won't load, verifier says R1 offset is outside of the packetlibbpf gives -EACCES on prog load, here's the verbose verifier log, fix itAya program rejected with "Unreleased reference id=2", help me repair it