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.