Problema de travamento do Windows 10 e cygwin

Problema de travamento do Windows 10 e cygwin

Quando executo um programa interativo (mysql, por exemplo) do cygwin no Windows 10, a entrada simplesmente trava e não faz nada. Se eu pressionar Ctrl-C, posso ver a entrada sendo enviada para o console.

Também estou vendo resultados estranhos de outros programas interativos (pry, irb) - tudo estava funcionando bem no Windows 7.

Alguém viu isso e resolveu?

Responder1

Se o strace estiver com falha de segmentação, a causa mais provável é um antivírus.

O mais recente que causa esse problema é o Micro Trend

https://cygwin.com/ml/cygwin/2016-08/msg00092.html

Vários casos foram relatados no último mês

Responder2

No ambiente cygwin o comando linux 'strace' está disponível. strace gera todas as interações do sistema operacional <--> (neste caso, aplicativo <--> cygwin <--> SO), e a chamada de sistema específica ou outra operação na qual ele está congelando deve ser aparente.

Para usar strace, basta anexar o comando strace antes do comando que inicia o aplicativo que você deseja depurar. Por exemplo, se você estiver iniciando o mysql a partir do terminal cygwin usando o comando mysql, chame-o como strace mysql.

Se a saída da execução do strace nos programas de congelamento não for aparente, poste a saída no pastebin ou equivalente (não tente adicionar à sua resposta, será uma quantidade enorme de texto).

O próximo passo seria executá-lo com um depurador como o gdb, mas em um caso como este strace geralmente é suficiente.

Atualizar

Aparentemente, houve um bug introduzido na porta cygwin do strace nos últimos dois meses; por uma pesquisa no Google de 'cygwin strace seg failed'; Eu não estava ciente disso. Como strace é a melhor ferramenta para este trabalho, tente atualizar a instalação do cygwin para ver se uma correção foi introduzida intencionalmente ou inadvertidamente. Para atualizar sua instalação do cygwin, você usa a seguinte sequência de comandos:

wget -NP /usr/local/bin/ http://cygwin.com/setup-x86_64.exe
chmod u+x /usr/local/bin/setup-x86_64.exe
/usr/local/bin/setup-x86_64.exe -n

Fonte

Após atualizar, tente novamente. Se ainda falhar, as coisas ficarão um pouco mais complicadas, pois o gdb é muito menos fácil de usar e não há equivalentes reais para strace disponíveis no ambiente cygwin que eu conheço atualmente.

Sempre há a chance de que a atualização resolva seus problemas de lançamento, e strace se torne um ponto discutível (não é uma chance muito grande...)

Atualização 2

Se o comando cygwin strace falhar após a atualização, acho que sua melhor aposta é usar um depurador de espaço de usuário nativo do Windows, como logger.exe. Informações de instalação podem ser encontradasaqui.

logger.exe é usado de maneira semelhante ao strace, o problema é que agora você terá traduções cygwins das chamadas de sistema dos programas expostas, não as chamadas de sistema reais. Em outras palavras, ele analisará apenas o sistema operacional para as interações do cygwin, e as especificidades do programa agressor poderão ser ofuscadas. No entanto, um travamento ou congelamento quase sempre pode ser atribuído a uma limitação de recursos ou a uma chamada do sistema que não responde, e este método irá expor isso.

Como estou oferecendo isso como uma alternativa para algo (strace) que ainda pode funcionar após a atualização, não entrarei em muitos detalhes sobre o uso específico dele. Basicamente o que você fará (pós-instalação) é chamar o cygwin a partir de um prompt de comando do Windows anexado pelo programa logger.exe, assim como descrevi o strace. Um terminal cygwin interativo será aberto e você precisará iniciar o programa que está avaliando. Uma enorme quantidade de texto (deveria) ser gerada pelo aplicativo logger descrevendo o que o cygwin e seu processo filho "seu programa" estão fazendo. Quando ocorre um travamento, a chamada de sistema específica ou o recurso que está sendo esperado deve ficar aparente. Novamente, se não for, poste o texto completo da saída do logger.

informação relacionada