Você também pode ver esta mensagem se estiver executando um sistema de compilação que execute algumas etapas de compilação em paralelo em uma máquina com vários núcleos e uma dessas etapas exigir uma saída da outra, mas o sistema de compilação não a conhece .
Por exemplo:
Se o sistema de compilação não souber que a etapa 2 depende da saída da etapa 1, ela poderá tentar aproveitar o fato de ter vários núcleos de CPU disponíveis e executar as duas etapas ao mesmo tempo. Nesse caso, a etapa 2 falhará porque o arquivo de cabeçalho necessário ainda não foi gerado. Em caso de falha, o gcc repete a compilação, mas nesse ponto, a etapa 1 foi concluída e o arquivo de cabeçalho está disponível. Assim, a segunda tentativa é bem-sucedida e o gcc assume que os resultados inconsistentes significam que o sistema operacional ou o hardware está falhando de alguma forma, mesmo que estejam funcionando perfeitamente.
Este é um bom exemplo de uma condição de corrida multithread, que pode ser altamente imprevisível quando encontrada em cenários mais complexos (como o sistema de compilação de um grande projeto como o Samba).
Eu experimentei isso pessoalmente usando o sistema de compilação ninja em outro projeto.
A maneira de corrigi-lo é certificar-se de que seus scripts de construção tornem o sistema de construção ciente da dependência entre as etapas.