Alguma coisa estava me incomodando sobre a saída da strace. Ou seja, parecia que quando o bash começou, parecia que já tinha o SIGWINCH mascarado. Não podia ter certeza, não entendia metade do que estava cuspindo, mas certamente valia a pena alguma exploração neste momento.
Eu corri strace -o strace_file bash -l
de um shell tcsh, onde o problema não estava presente. bash nunca mascarou o SIGWINCH. Quando estava mascarando, era apenas porque estava tentando restaurar a máscara anterior. Então, de onde vem a máscara inicial?
Mais um pouco de tempo no Google e uma nova ideia e achei este post que mencionou que o aptitude pode algumas vezes fazer com que o sshd seja iniciado com o SIGWINCH mascarado, e que ele seja então herdado por todos os processos gerados diretamente no shell.
Eu tentei ps axwwws
(todos, saída separada, sinais largos). Ele mostrou vários dos processos sshd gerados pelo SIGWINCH mascarados.
O processo servidor / escuta (o próprio sshd) não. Nem os processos que hospedavam conexões que usavam o tcsh. Essa parte é confusa para mim. Eu estou supondo (mais uma vez, sabendo muito pouco sobre isso) que a máscara de sinal é ampla no grupo de processos ou algo assim, tcsh estava redefinindo isso no início, e isso também estava afetando o ssh.
Então, por um capricho, eu me conectei com o tcsh (para obter um termo limpo sem máscara SIGWINCH), reiniciei o ssh, mudei meu shell de volta para o bash ... E deu certo! Tudo voltou ao normal!
Tanto quanto eu saiba, o aptitude não foi executado nesta caixa, e o ssh foi reiniciado algumas vezes para mudanças na configuração. Em algum lugar ao longo da linha, a máscara invadiu e infectou tudo como uma doença grave.
Para reconhecer o mesmo problema, execute ps axwwws | grep sshd
e procure por processos sshd com a segunda coluna longa ( BLOCKED
) configurada como 0x8000000. Isso é SIGWINCH. Algo como:
0 26425 0000000000000000 0000000008000000 0000000000001000 0000000180004003 Ss ? 0:00 sshd: aa [priv]
1000 26430 0000000000000000 0000000008000000 0000000000001000 0000000180010000 S ? 0:02 sshd: aa@pts/24
Para corrigir (possivelmente não é a melhor solução, funcionou para mim):
$ sudo apt-get install tcsh
[snip]
$ chsh -s /bin/tcsh
[connect in with a new connection, leave the old one open in case of any issues with tcsh]
$ sudo /etc/init.d/ssh restart
E está consertado.
Felicidades!