Por que o Tramp trava ao enviar scripts Perl para o host remoto?

Por que o Tramp trava ao enviar scripts Perl para o host remoto?

Eu sei que isso não está diretamente relacionado à programação, mas estou perplexo, e como o Emacs é minha principal ferramenta de programação...

Estou tentando configurar o Tramp para se conectar ao meu host de teste. Estou invocando-o usando /ssh:host:.bashrcou /scp:host:.bashrcmas ambos enfrentam o mesmo problema, mais cedo ou mais tarde.

Eles chegam apenas até a primeira tentativa de enviar um script perl antes que o processo seja interrompido e eu seja forçado a encerrar a sessão ssh de um cliente.

Por exemplo:

tramp: Opening connection for username@host using scp...
tramp: Waiting 60s for local shell to come up...
tramp: Sending command `ssh host -l username  -e none || exit'
tramp: Waiting for prompts from remote shell
tramp: Waiting 60s for prompt from remote shell on host host
tramp: Found remote shell prompt on `host'
tramp: Waiting 30s for remote `/bin/sh' to come up...
tramp: Setting up remote shell environment
tramp: Determining coding system
tramp: Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1; export HISTFILE; export HISTSIZE'
tramp: Waiting 30s for `set +o vi +o emacs'
tramp: Waiting 30s for `unset MAIL MAILCHECK MAILPATH'
tramp: Waiting 30s for `unset CDPATH'
tramp: Setting shell prompt
tramp: Remote `/bin/sh' groks tilde expansion, good
tramp: Finding command to check if file exists
tramp: Finding a suitable `ls' command
tramp: Checking remote `/bin/ls' command for `-n' option
tramp: Testing remote command `/bin/ls' for -n...okay
tramp: Using remote command `/bin/ls' for getting directory listings
tramp: Sending the Perl script `tramp_file_attributes'...
tramp-wait-for-output: Process has died

Este rastreamento está usando o scpmétodo. O sshmétodo é assim:

tramp: Opening connection for username@host using ssh...
tramp: Waiting 60s for local shell to come up...
tramp: Sending command `ssh host -l username  -e none || exit'
tramp: Waiting for prompts from remote shell
tramp: Waiting 60s for prompt from remote shell on host host
tramp: Found remote shell prompt on `host'
tramp: Waiting 30s for remote `/bin/sh' to come up...
tramp: Setting up remote shell environment
tramp: Determining coding system
tramp: Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1; export HISTFILE; export HISTSIZE'
tramp: Waiting 30s for `set +o vi +o emacs'
tramp: Waiting 30s for `unset MAIL MAILCHECK MAILPATH'
tramp: Waiting 30s for `unset CDPATH'
tramp: Setting shell prompt
tramp: Remote `/bin/sh' groks tilde expansion, good
tramp: Finding command to check if file exists
tramp: Finding a suitable `ls' command
tramp: Checking remote `/bin/ls' command for `-n' option
tramp: Testing remote command `/bin/ls' for -n...okay
tramp: Using remote command `/bin/ls' for getting directory listings
tramp: Sending the Perl `mime-encode' implementations.
tramp-wait-for-output: Process has died

Como você pode ver, a última coisa que acontece é tentar enviar o script Perl. O processo está morrendo porque estou matando-o em outro shell, caso contrário o emacs nunca mais voltará disso.

Estou me conectando FreeBSD 6.2-RELEASE-p5a partir do OSX 10.5.7, se faz alguma diferença, usando Tramp 2.0.58-prena compilação Carbon Emacs 22.3.1.

Responder1

Talvez strace no pid do sshd na extremidade receptora (o servidor FreeBSD) mostre onde ele está travando. Você precisará seguir os processos filhos com -f. Se o pid do sshd for 3125:

sudo strace -vfp 3125 -o sshdStraceDump.txt

informação relacionada