Les LLM peinent avec unsafe Rust : six mois de tests ont révélé des erreurs critiques

Pendant six mois, l’auteur a fait écrire du code unsafe Rust à des LLM dans des projets réels et a analysé les résultats avec Miri. Les modèles se trompent de façon récurrente : aliasing, provenance, layout en gestion mémoire, ManuallyDrop oublié, conditions de course en FFI, Send/Sync incorrects et mémoire non initialisée. Chaque erreur peut être reproduite et corrigée.

Traité par IA depuis Habr AI ; édité par Hamidun News
Les LLM peinent avec unsafe Rust : six mois de tests ont révélé des erreurs critiques
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Chiffre clé #1Aliasing — violation de la règle des références non chevauchantes
Chiffre clé #2Provenance — tentatives d'utiliser des pointeurs obtenus de manière incorrecte
Chiffre clé #3Layout en alloc/dealloc — désalignement de taille/alignement lors de l'allocation et la désallocation

L'auteur a demandé à LLM d'écrire du code unsafe Rust dans des projets en production pendant six mois et a vérifié chaque bloc avec Miri et des sanitizers. Le résultat était décevant : les modèles faisaient les mêmes erreurs de manière prévisible et constante.

Sept catégories d'erreurs LLM dans unsafe Rust

Les modèles font systématiquement les mêmes erreurs aux mêmes endroits :

  • Aliasing — violation de la règle des références non chevauchantes
  • Provenance — tentatives d'utiliser des pointeurs obtenus de manière incorrecte
  • Layout en alloc/dealloc — désalignement de taille/alignement lors de l'allocation et la désallocation
  • ManuallyDrop — oublient d'appeler drop ou accèdent à l'objet après drop
  • Race conditions dans les callbacks FFI — conditions de course lors de l'appel de fonctions C à partir de threads
  • Send/Sync manuels — implémentent incorrectement les traits de sécurité des threads
  • Mémoire Uninit — traitent les données non initialisées comme initialisées

Pourquoi Miri a révélé les problèmes

Miri est un interpréteur Rust qui suit le comportement indéfini. Lorsque LLM génère du code avec des violations subtiles à première vue (par exemple, un pointeur temporaire avec une provenance incorrecte), le compilateur régulier les manque, mais Miri les détecte. Sous les sanitizers (AddressSanitizer, ThreadSanitizer), les conditions de course et les use-after-free ont été découverts, ce qui peut ne pas apparaître dans les tests réguliers.

«

Chaque catégorie est accompagnée d'un exemple minimal et d'une correction » — l'auteur montre qu'il ne s'agit pas seulement d'observations, mais de modèles d'erreurs reproductibles.

Ce que cela signifie

Les LLM ne sont pas encore prêts à écrire unsafe Rust sans supervision humaine. Ils génèrent bien la syntaxe et la logique générale, mais font systématiquement des erreurs en gestion mémoire et multithreading. Pour le code critique (logiciels système, bibliothèques système), l'unsafe Rust des modèles doit être vérifié avec Miri.

Questions clés sur cet article

Que sait-on sur Sept catégories d'erreurs LLM dans unsafe Rust ?

Les modèles font systématiquement les mêmes erreurs aux mêmes endroits : Aliasing — violation de la règle des références non chevauchantes Provenance — tentatives d'utiliser des pointeurs obtenus de manière incorrecte Layout en alloc/dealloc — désalignement de taille/alignement lors de l'allocation et la désallocation ManuallyDrop — oublient d'appeler drop ou accèdent à l'objet après drop Race conditions dans les callbacks FFI — conditions de course lors de l'appel de fonctions C à partir de threads Send/Sync manuels — implémentent incorrectement les traits de sécurité des

Pourquoi Miri a révélé les problèmes?

Miri est un interpréteur Rust qui suit le comportement indéfini. Lorsque LLM génère du code avec des violations subtiles à première vue (par exemple, un pointeur temporaire avec une provenance incorrecte), le compilateur régulier les manque, mais Miri les détecte. Sous les sanitizers (AddressSanitizer, ThreadSanitizer), les conditions de course et les use-after-free ont été découverts, ce qui peut ne pas apparaître dans les tests réguliers. « Chaque catégorie est accompagnée d'un exemple minimal et d'une correction » — l'auteur montre qu'il ne s'agit pas seulement d'observa

Que sait-on sur Ce que cela signifie ?

Les LLM ne sont pas encore prêts à écrire unsafe Rust sans supervision humaine. Ils génèrent bien la syntaxe et la logique générale, mais font systématiquement des erreurs en gestion mémoire et multithreading. Pour le code critique (logiciels système, bibliothèques système), l'unsafe Rust des modèles doit être vérifié avec Miri.

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
Qu'en pensez-vous ?
Chargement des commentaires…