¿Por qué Tramp se bloquea al enviar scripts Perl al host remoto?

¿Por qué Tramp se bloquea al enviar scripts Perl al host remoto?

Sé que esto no está directamente relacionado con la programación, pero estoy perplejo, y dado que Emacs es mi principal herramienta de programación...

Estoy intentando configurar Tramp para que se conecte a mi host de prueba. Lo estoy invocando usando /ssh:host:.bashrco /scp:host:.bashrcpero ambos tienen el mismo problema, tarde o temprano.

Solo llegan hasta el primer intento de enviar un script en Perl antes de que el proceso se bloquee y me obligue a cerrar la sesión ssh de un cliente.

Por ejemplo:

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 rastro está utilizando el scpmétodo. El sshmétodo se ve así:

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 puede ver, lo último que sucede es intentar enviar el script Perl. El proceso está muriendo porque lo estoy matando en otro shell; de lo contrario, emacs nunca vuelve de esto.

Me estoy conectando FreeBSD 6.2-RELEASE-p5desde OSX 10.5.7, si hay alguna diferencia, usando Tramp 2.0.58-preen la compilación Carbon Emacs 22.3.1.

Respuesta1

Quizás strace en el pid de sshd en el extremo receptor (el servidor FreeBSD) le muestre dónde se está bloqueando. Necesitará seguir los procesos secundarios con -f. Si el pid de sshd es 3125:

sudo strace -vfp 3125 -o sshdStraceDump.txt

información relacionada