cygwin: como corrigir falhas no garfo

0

Eu sei que há muitas informações sobre isso, mas não consegui encontrar uma solução. Talvez alguém que saiba mais sobre como o cygwin funciona pode ajudar.

Eu tive cygwin trabalhando por vários meses sem problemas até quarta-feira. Quarta-feira, enquanto experimentava, eu acidentalmente executei eval "exit 1" . Cygwin imediatamente porque imprime erros de garfo, como este:

      0 [main] -bash 10632 fork: child 11748 - died waiting for dll loading, errno 11
-bash: fork: retry: Resource temporarily unavailable

Agora recebo esses erros de garfo toda vez que tento originar meu arquivo .bash_profile , que vinculei aqui , incluindo quando Eu primeiro inicio o terminal. O único arquivo que obtém proveniente sob aquele que também faz com que o erro é git-completion.bash , mas a remoção desse arquivo não impede que source .bash_profile tenha erros.

Eu reiniciei meu computador, atualizei o cygwin e executei uma reformulação completa, e ainda estou recebendo esse erro. Parece provável que, ao executar esse comando, eu acidentalmente matei algo que não deveria ter feito, mas não tenho ideia do que poderia ser. Alguma idéia?

Eu não estou executando nenhum BLODA. Estou executando o cygwin de 64 bits no Windows 7.

    
por ewok 24.11.2017 / 16:17

1 resposta

0

As falhas no fork do cygwin nunca são 100% possíveis de eliminar - consulte Perguntas freqüentes do Cygwin - Como corrigir falhas do garfo?

Citando o site do cygwin:

How do I fix fork() failures?

Unfortunately, Windows does not use the fork/exec model of process creation found in UNIX-like OSes, so it is difficult for Cygwin to implement a reliable and correct fork(), which can lead to error messages such as:

  • unable to remap somedll to same address as parent
  • couldn't allocate heap
  • died waiting for dll loading
  • child -1 - died waiting for longjmp
  • before initialization
  • STATUS_ACCESS_VIOLATION
  • resource temporarily unavailable

Potential solutions for the above errors:

  • Restart whatever process is trying (and failing) to use fork(). Sometimes Windows sets up a process environment that is even more hostile to fork() than usual.
  • Ensure that you have eliminated (not just disabled) all software on the BLODA.
  • Switch from 32-bit Cygwin to 64-bit Cygwin, if your OS and CPU support that. With the bigger address space fork() is less likely to fail.
  • Try setting the environment variable CYGWIN to "detect_bloda", which enables some extra debugging, which may indicate what other software is causing the problem.

Na minha experiência, quanto mais tempo a sua máquina Windows estiver instalada e funcionando, mais chances você tem de uma falha de bifurcação, eu estou supondo que a fragmentação da memória ao longo do tempo pode tornar mais difícil para o cygwin fazer o garfo.

Eu notei que adicionar mais memória RAM também pode ajudar.

Eu tive um sucesso razoável programando reinicializações de máquinas cygwin.

Dito isso, o mais efetivo foi usar o cygwin de 64 bits em vez de 32 bits e estar preparado para substituir totalmente o cygwin e ser generoso ao fornecer exclusões explícitas de antivírus para as pastas de instalação do cygwin.

    
por 19.05.2018 / 18:31

Tags