Saltar al contenido principal
En Linux, el servidor de lenguaje de Windsurf puede fallar al iniciar con un error que contiene «no space left on device», incluso cuando el sistema tiene bastante espacio libre en disco. Esto se debe a que se han agotado los límites del kernel de Linux para inotify watch o inotify instance, no al uso real de disco. El servidor de lenguaje usa inotify para vigilar cambios en los archivos de tu workspace. Cuando se alcanza el límite del kernel, el sistema devuelve un error ENOSPC, que comúnmente se muestra como «no space left on device».

Síntomas

Es posible que aparezca lo siguiente en los logs de salida de Windsurf:
Language server failed - no space left on device: no space left on device
A menudo va acompañado de trazas de pila que hacen referencia a componentes como:
  • file_watcher
  • AddTrackedWorkspace
  • AddDirectoriesRecursive
Comportamiento que suele observarse:
  • Windsurf se abre con normalidad
  • El servidor de lenguaje se cierra inmediatamente después de iniciarse
  • Las funcionalidades que dependen del servidor de lenguaje (p. ej., Cascade, Autocomplete) no funcionan

Diagnóstico

1. Comprueba los límites actuales de inotify

Ejecuta los siguientes comandos:
# Check the maximum number of inotify watches per user
cat /proc/sys/fs/inotify/max_user_watches

# Verificar el número máximo de instancias de inotify por usuario
cat /proc/sys/fs/inotify/max_user_instances
Los valores predeterminados habituales son 8192 para watches y 128 para instancias. Estos suelen ser demasiado bajos para el uso en un IDE en workspaces grandes (especialmente monorepos) y pueden verse reducidos aún más por otros procesos que consumen recursos de inotify (contenedores, herramientas de sincronización, otros editores, servicios en segundo plano).

2. Comprueba cuántas instancias de inotify se están usando actualmente

find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l
Si este valor está cerca de (o por encima de) tu max_user_instances, es posible que los nuevos usuarios de inotify (como el servidor de lenguaje) fallen al inicializarse.

Solución

Aumenta los límites de inotify. Puedes aplicar los cambios temporalmente (hasta el próximo reinicio) o de forma permanente.

Solución temporal (hasta reiniciar)

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

Solución permanente (persiste tras reiniciar el sistema)

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
Después de aplicar cualquiera de las soluciones, reinicia Windsurf. El servidor de lenguaje debería iniciarse correctamente. Esta es una limitación bien conocida en Linux que afecta a otros IDE y herramientas de desarrollo que dependen de monitores de archivos. Si tu organización gestiona las configuraciones del sistema de forma centralizada, pide a tu equipo de TI / infraestructura que aplique estos parámetros de sysctl.

Cuándo usar cada valor

  • fs.inotify.max_user_watches=524288
    Se recomienda para repositorios grandes o monorepos. Cada archivo/directorio supervisado consume memoria del kernel (a menudo ~1 KB por watch en sistemas de 64 bits), por lo que 524288 watches pueden llegar a usar aproximadamente ~512 MB de memoria del kernel.
  • fs.inotify.max_user_instances=1024
    Se recomienda si ejecutas varias aplicaciones que crean instancias de inotify (múltiples ventanas del IDE, contenedores, herramientas de sincronización de archivos, etc.). El valor predeterminado de 128 puede agotarse rápidamente en entornos de desarrollo.