1 points par GN⁺ 2024-11-28 | 1 commentaires | Partager sur WhatsApp
  • Utilisations de C-Reduce

    • C-Reduce est un outil développé par Regehr et ses collègues, utilisé pour minimiser les reproductions de bugs de compilateurs C.
    • Par exemple, il est utile lorsqu’on veut réduire un fichier C de 1000 lignes qui déclenche un bug dans Clang.
    • C-Reduce ne se limite pas au langage C et peut s’appliquer à divers langages.
  • Exigences de C-Reduce

    • Une condition déterministe est nécessaire.
    • Disposer d’un reproducer rapide aide à accélérer la réduction.
    • Il faut un ou plusieurs fichiers source modifiables que C-Reduce peut réduire.
  • Cas d’un bug dans RustPython

    • Rédaction du script interesting.sh pour signaler un bug survenu dans RustPython.
    • Le script exécute RustPython puis recherche un message d’erreur spécifique avec grep.
  • Exécution de C-Reduce

    • L’exécution de C-Reduce a permis de réduire la taille du fichier de plus de 50 %.
    • L’option --not-c a été utilisée pour éviter les passes spécifiques au C et optimiser le processus pour Python.
    • Au final, il a été possible de réduire le fichier rapidement et facilement.
  • Conclusion

    • C-Reduce peut s’appliquer à divers langages et s’avère utile pour réduire des fichiers rapidement et efficacement.
    • Il s’agit d’un blog open source, avec possibilité de proposer des modifications en cas d’erreur.

1 commentaires

 
GN⁺ 2024-11-28
Commentaires sur Hacker News
  • Un utilisateur partage une méthode pour réduire des fichiers et explique comment la configurer avec RustPython et scrapscript

    • Utilise la commande git clone pour cloner RustPython et scrapscript, puis les compile avec cargo build --release
    • Télécharge le fichier interesting.sh et lui donne les droits d’exécution
    • Réduit le fichier avec la commande nix run nixpkgs#creduce
  • Recommande d’utiliser C-Reduce et suggère aussi d’essayer un outil appelé Shrinkray

    • Shrinkray est indépendant du format et reste utile même lorsque C-Reduce ne fonctionne pas bien
  • Mentionne qu’un article sur C-Reduce a été publié en 2012

    • Explique le fonctionnement de C-Reduce à travers l’article de John Regehr et al.
  • Dit qu’il vient de découvrir C-Reduce et ressent le même enthousiasme que lorsqu’il a découvert git bisect pour la première fois

    • Décide de s’en souvenir pour l’utiliser plus tard en cas de besoin
  • A trouvé un article montrant des exemples de C-Reduce, mais a du mal à comprendre comment il décide quoi retirer à chaque itération

    • Suppose qu’il existe un processus de tokenisation, mais a du mal à comprendre comment cela fonctionne entre différents langages de programmation
  • Estime que C-Reduce est extrêmement utile

    • Utilise CSmith pour générer des programmes de test aléatoires et, en cas de plantage, emploie automatiquement C-Reduce pour réduire le problème
  • Le delta debugging n’est pas un concept nouveau

    • Une implémentation du delta debugging appelée "delta" existe depuis plus de 19 ans et a été publiée en open source
    • Elle est mentionnée comme outil standard de delta debugging dans l’introduction à LLVM
  • Indique que cela fonctionne aussi très bien avec SQL et qu’il l’utilise au travail

    • L’a découvert via SQLancer
  • Trouve difficile d’y croire sans explication sur la raison pour laquelle cela fonctionne aussi avec des langages autres que le C

    • Le fait qu’il n’utilise pas de LLM rend cela encore plus déroutant
  • Recommande cvise comme bon successeur de C-Reduce

    • L’a utilisé à plusieurs reprises pour réduire des programmes assembleur à un ensemble minimal, et le considère comme un programme très utile