2 votos

Ejecutar `ps -t /dev/<tty>` empezó a causar que el terminal especificado dejara de recibir la mayoría de las pulsaciones de teclas

Problema Específico

Recientemente, al ejecutar ps -t /dev/ ha empezado a causar que el terminal asociado deje de recibir algunas pulsaciones de teclas. No logro entender por qué ha comenzado a ocurrir esto ahora, sin actualizaciones de software que yo conozca.

Después de ejecutar el comando ps, la mayoría de las pulsaciones de teclas ya no llegan a esta terminal o al programa que se esté ejecutando en el tty (por ejemplo, si se ejecuta desde una subshell de vim). Solo una parte logra llegar, requiriendo repetir las pulsaciones varias veces antes de que se registren, como si fueran absorbidas por otro proceso. Ejecuciones repetidas de ps -t empeoran aún más el problema.

Para Reproducir

Es importante mencionar que solo puedo reproducir esto en una de mis máquinas.

ps -t $(tty)

Ahora se pierce un porcentaje significativo de las pulsaciones de teclas en el TTY.

Se puede ejecutar en el TTY actual o en otro TTY. El TTY objetivo se ve afectado.

Para recuperarse de esto, salga del TTY usando Ctrl+D o exit. (Será necesario ingresar las pulsaciones de teclas repetidamente.)

Me interesaría saber quién puede y quién no puede reproducir esto.

Por Qué es Necesario

vim-tmux-navigator utiliza esta configuración de tmux para detectar si vim es el proceso activo en el panel tmux actual, con el fin de permitir una navegación fluida dentro y entre los splits de vim y los paneles de tmux.

is_vim="ps -o state= -o comm= -t '#{pane_tty}' | \
        grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
bind-key -n M-h if-shell "$is_vim" "send-keys M-h"  "select-pane -L"
bind-key -n M-j if-shell "$is_vim" "send-keys M-j"  "select-pane -D"
bind-key -n M-k if-shell "$is_vim" "send-keys M-k"  "select-pane -U"
bind-key -n M-l if-shell "$is_vim" "send-keys M-l"  "select-pane -R"

Versiones

Estoy usando MacOS 14.6.1.

El ejecutable /bin/ps no ha sido modificado en unos meses, y esto ha estado funcionando desde entonces.

 ls -l `which ps`
-rwsr-xr-x  1 root  wheel  170816 Aug  4 06:31 /bin/ps

No he actualizado nada más que yo conozca desde la última vez que esto funcionaba.

Más rarezas

Después de que un tty empieza a perder pulsaciones de teclas, si se mata a través de tmux con :kill-window en lugar de salir normalmente, entonces otras cosas comienzan a bloquearse hasta reiniciar:

  • brew (que se ejecuta para verificar la versión de openssl durante la ejecución de bashrc) a veces se bloquea y no se puede detener con ^C o ^Z hasta después de reiniciar, lo que bloquea la apertura de nuevas terminales.
  • sudo dmesg se bloquea y no se puede detener con ^C o ^Z hasta después de reiniciar.
  • ps -ef muestra algunos procesos pero luego se bloquea. A diferencia de los otros, se puede detener con ^C.

Issue relacionado en GitHub

3voto

Mathieu Lemay Puntos 46

También tengo este problema, y noté que para cada invocación de ps -t, el Agente Crowdstrike Falcon abre un nuevo fd en esa tty. Eso explicaría por qué comenzó a suceder de repente, no es ps en sí mismo, es una actualización de Crowdstrike. Todos sabemos lo bien que están probados esos. También confirma tu sospecha @Barmar, es de hecho otro proceso leyendo la prueba. Por eso tampoco afecta a todos, solo a aquellos con Crowdstrike.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X