Problema de suspensão do Windows 10 e cygwin

1

Quando eu executo um programa interativo (mysql, por exemplo) do cygwin no Windows 10, a entrada simplesmente fica pendurada e não faz nada. Se eu ctrl-c sair, posso ver a entrada ser 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?

    
por pguardiario 11.08.2016 / 04:08

2 respostas

3

No ambiente cygwin, o comando linux 'strace' está disponível. strace produz todos os SO < - > interações de aplicativo (nesse caso, aplicativo & quot; cygwin < - > SO), e a chamada específica do sistema ou outra operação em que ele está congelando deve estar aparente.

Para usar strace você simplesmente prefixar 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 da strace nos programas de congelamento não for aparente, poste a saída para 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 esse strace é geralmente suficiente.

Atualizar

Aparentemente existe um bug introduzido no porto de Strace de cygwin nos últimos dois meses; por uma pesquisa no google de 'cygwin strace seg fault'; Eu não estava ciente disso. Como strace é a melhor ferramenta para este trabalho, tente atualizar sua instalação do cygwin para ver se uma correção foi intencionalmente ou inadvertidamente introduzida. Para atualizar sua instalação do cygwin, use 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 a atualização, tente novamente. Se ainda houver falhas, as coisas ficarão um pouco confusas, já que 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.

Há sempre a chance de a atualização resolver seus problemas de lançamento, e a strace se torna um ponto discutível (não é uma grande chance ...)

Atualização 2

Se o cygwin strace comandar os segfaults após a atualização, acho que sua melhor opção é usar um depurador de espaço do usuário nativo do Windows, como o logger.exe. Informações de instalação podem ser encontradas aqui .

logger.exe é usado de maneira similar à strace, o problema é que agora você terá traduções dos programas expostos às chamadas do sistema, e não as chamadas reais do sistema. Em outras palavras, ele só estará olhando para o sistema operacional para interações cygwin, e as especificidades do programa ofensivo podem ser ofuscadas. No entanto, um travamento ou congelamento quase sempre pode ser atribuído a uma limitação de recurso ou a uma chamada de sistema que não responde, e esse método exporá isso.

Desde que eu estou oferecendo isso como uma alternativa para algo (strace) que ainda pode funcionar após a atualização, não vou entrar em grande detalhe para o uso específico do mesmo. Basicamente, o que você fará (pós-instalação), é chamar cygwin a partir de um prompt de comando do windows prefixado pelo programa logger.exe, assim como descrevi strace. Um terminal cygwin interativo será aberto e você precisará iniciar o programa que está avaliando a partir dele. Uma enorme quantidade de texto (deve) ser produzida pelo aplicativo logger descrevendo o que o cygwin e seu processo filho "seu programa" estão fazendo. Quando ocorre um travamento, a chamada específica do sistema ou o recurso que está sendo aguardado deve estar aparente. Novamente, se não for, poste o texto completo da saída do registrador.

    
por 11.08.2016 / 04:39
3

Se strace estiver se separando, a causa mais provável é um antivírus.

O mais recente causador deste problema é o Micro Trend

link

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

    
por 11.08.2016 / 07:11