Passer au contenu principal
Sous Linux, le serveur de langage de Windsurf peut ne pas réussir à démarrer avec une erreur contenant “no space left on device”, même lorsque le système dispose de beaucoup d’espace disque libre. Cela est dû à l’épuisement des limites du noyau Linux pour les surveillances inotify ou les instances inotify, et non à l’utilisation réelle de l’espace disque. Le serveur de langage utilise inotify pour surveiller les fichiers de votre workspace afin de détecter les modifications. Lorsque la limite du noyau est atteinte, le système renvoie une erreur ENOSPC—qui apparaît généralement sous la forme “no space left on device.”

Symptômes

Vous pouvez voir apparaître ce qui suit dans les logs de sortie de Windsurf :
Language server failed - no space left on device: no space left on device
Souvent accompagné de traces de pile faisant référence à des composants comme :
  • file_watcher
  • AddTrackedWorkspace
  • AddDirectoriesRecursive
Comportement que vous observerez généralement :
  • Windsurf s’ouvre normalement
  • Le serveur de langage s’arrête immédiatement après son démarrage
  • Les fonctionnalités dépendantes du serveur de langage (par exemple, Cascade, Autocomplete) ne fonctionnent pas

Diagnostic

1. Vérifiez vos limites inotify actuelles

Exécutez les commandes suivantes :
# Check the maximum number of inotify watches per user
cat /proc/sys/fs/inotify/max_user_watches

# Vérifier le nombre maximum d'instances inotify par utilisateur
cat /proc/sys/fs/inotify/max_user_instances
Les valeurs par défaut typiques sont 8192 pour les watches et 128 pour les instances. Elles sont souvent trop basses pour l’utilisation d’un IDE dans de grands workspaces (notamment les monorepos) et peuvent être encore réduites par d’autres processus consommant des ressources inotify (conteneurs, outils de synchronisation, autres éditeurs, services en arrière-plan).

2. Vérifiez le nombre d’instances inotify actuellement utilisées

find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l
Si ce nombre est proche (ou supérieur) à votre max_user_instances, il se peut que les nouveaux utilisateurs inotify (comme le serveur de langage) ne parviennent pas à s’initialiser.

Solution

Augmentez les limites d’inotify. Vous pouvez appliquer ces modifications temporairement (jusqu’au prochain redémarrage) ou de façon permanente.

Correctif temporaire (jusqu’au redémarrage)

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=1024

Solution permanente (persiste après redémarrage)

echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
echo "fs.inotify.max_user_instances=1024" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Après avoir appliqué l’un ou l’autre correctif, redémarrez Windsurf. Le serveur de langage devrait démarrer correctement. Il s’agit d’une limitation bien connue sous Linux qui affecte d’autres IDE et outils de développement qui s’appuient sur des mécanismes de surveillance de fichiers. Si la configuration système est gérée de manière centralisée dans votre organisation, demandez à votre équipe IT/infra d’appliquer ces paramètres sysctl.

Quand utiliser quelle valeur

  • fs.inotify.max_user_watches=524288
    Recommandé pour les grands dépôts ou les monorepos. Chaque fichier/répertoire surveillé consomme de la mémoire du noyau (souvent ~1 Ko par surveillance sur les systèmes 64 bits), donc 524288 surveillances peuvent utiliser environ ~512 Mo de mémoire du noyau.
  • fs.inotify.max_user_instances=1024
    Recommandé si vous exécutez plusieurs applications qui créent des instances inotify (plusieurs fenêtres d’IDE, conteneurs, outils de synchronisation de fichiers, etc.). La valeur par défaut de 128 peut être atteinte rapidement dans les environnements de développement.