debug-fuzzer-failure
Automatyczne debugowanie błędów fuzzerów SSA — od logu CI do naprawy w kilka minut
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Umożliwia szybkie znalezienie przyczyny błędów SSA fuzzerów w pipeline'u CI. Skill wyodrębnia przypadek reprodukcji z logów GitHub Actions, a następnie przeszukuje SSA passes, aby zidentyfikować, który z nich narusza semantykę kodu. Idealne dla deweloperów pracujących nad kompilatorami Noir, którzy muszą szybko przejść od czerwonego buildu do konkretnego pass'a zawierającego bug. Obsługuje fuzzer pass_vs_prev i podobne testy weryfikujące zachowanie semantyczne.
Jak używać
Przygotuj link do GitHub Actions job'a, w którym fuzzer
pass_vs_prevlub podobny test się nie powiódł. Link powinien mieć formathttps://github.com/noir-lang/noir/actions/runs/[ID]/job/[JOB_ID].Uruchom skill z adresem URL job'a jako wejście. Skill automatycznie pobierze logi z GitHub Actions i wyodrębni projekt Noir, który spowodował błąd.
Zweryfikuj, że przypadek reprodukcji działa lokalnie — powinieneś otrzymać katalog zawierający
src/main.nr(wygenerowany program) iProver.toml(wartości wejściowe, które wyzwalają błąd).Użyj sub-skill'u
bisect-ssa-pass, aby przeszukać SSA passes i znaleźć dokładnie ten, który narusza semantykę. Skill będzie testować poszczególne passes, aż do zidentyfikowania winnego.Przeanalizuj znaleziony pass i napraw bug w kodzie kompilera. Skill dostarcza wystarczających informacji, aby zrozumieć, które transformacje SSA powodują problem.
Jeśli błąd pochodzi z fuzzerów innych niż
pass_vs_prev, sprawdź nazwę testu w logach (formattargets::u003cfuzzer_typeu003e::tests::fuzz_with_arbtest) i skonsultuj się z zespołem, ponieważ workflow może wymagać innego podejścia.