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.