Zum Hauptinhalt springen
Unter Linux kann der Windsurf Language Server mit einem Fehler fehlschlagen, der „no space left on device“ enthält, selbst wenn das System noch reichlich freien Speicherplatz auf dem Datenträger hat. Dies wird durch ausgeschöpfte inotify watch- bzw. inotify instance-Grenzwerte des Linux-Kernels verursacht und nicht durch die tatsächliche Datenträgerbelegung. Der Language Server verwendet inotify, um Dateien in Ihrem Workspace auf Änderungen zu überwachen. Wenn das Kernel-Limit erreicht ist, gibt das System einen ENOSPC-Fehler zurück – der üblicherweise als „no space left on device“ ausgegeben wird.

Symptome

In den Windsurf-Ausgabe-Logs können Sie Folgendes sehen:
Language server failed - no space left on device: no space left on device
Häufig begleitet von Stacktraces, die auf Komponenten wie die folgenden verweisen:
  • file_watcher
  • AddTrackedWorkspace
  • AddDirectoriesRecursive
Typischerweise zu beobachtendes Verhalten:
  • Windsurf öffnet sich ganz normal
  • Der Language Server beendet sich unmittelbar nach dem Start
  • Vom Language Server abhängige Funktionen (z. B. Cascade, Autocomplete) funktionieren nicht

Diagnose

1. Überprüfen Sie Ihre aktuellen inotify-Limits

Führen Sie die folgenden Befehle aus:
# Maximale Anzahl der inotify-Überwachungen pro Benutzer prüfen
cat /proc/sys/fs/inotify/max_user_watches

# Check the maximum number of inotify instances per user
cat /proc/sys/fs/inotify/max_user_instances
Übliche Standardwerte sind 8192 für Watches und 128 für Instanzen. Diese sind für die IDE-Nutzung in großen Workspaces (insbesondere Monorepos) häufig zu niedrig und können zudem durch andere Prozesse weiter reduziert werden, die inotify-Ressourcen verbrauchen (Container, Sync-Tools, andere Editoren, Hintergrunddienste).

2. Überprüfen Sie, wie viele inotify-Instanzen aktuell in Verwendung sind

find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l
Wenn dieser Zähler nahe an deinem max_user_instances-Limit liegt oder es überschreitet, können neue inotify-Clients (wie der Sprachserver) möglicherweise nicht initialisiert werden.

Lösung

Erhöhen Sie die inotify-Grenzwerte. Sie können die Änderungen entweder temporär (bis zum Neustart) oder dauerhaft anwenden.

Vorübergehender Fix (bis zum Neustart)

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

Dauerhafte Lösung (bleibt auch nach einem Neustart erhalten)

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
Nachdem Sie eine der beiden Lösungen angewendet haben, starten Sie Windsurf neu. Der Language Server sollte nun erfolgreich starten. Dies ist eine bekannte Einschränkung unter Linux, die auch andere IDEs und Entwickler-Tools betrifft, die auf File-Watcher angewiesen sind. Wenn Ihre Organisation Systemkonfigurationen zentral verwaltet, bitten Sie Ihr IT-/Infrastrukturteam, diese sysctl-Einstellungen anzuwenden.

Wann welcher Wert verwendet werden sollte

  • fs.inotify.max_user_watches=524288
    Empfohlen für große Repositories oder Monorepos. Jede überwachte Datei bzw. jedes überwachte Verzeichnis verbraucht Kernel-Speicher (oft ca. 1 KB pro Überwachung auf 64-Bit-Systemen), sodass 524288 Überwachungen ungefähr ~512 MB Kernel-Speicher belegen können.
  • fs.inotify.max_user_instances=1024
    Empfohlen, wenn Sie mehrere Anwendungen ausführen, die inotify-Instanzen erstellen (mehrere IDE-Fenster, Container, Datei-Sync-Tools usw.). Der Standardwert von 128 kann in Entwicklungsumgebungen schnell ausgeschöpft sein.