O bug não é reproduzível, então é provável que um problema de hardware ou SO [fechado]

1

Estou tentando instalar o Samba 4.0.9 em um servidor, mas sempre recebo esse erro toda vez. Eu tentei de tudo, desde apt-get -f install até edição /var/lib/dpkg/status Package: Samba4 Install ok installed

Este é o erro que recebo:

[ 866/3792] Compiling source4/dsdb/common/util.c
[ 867/3792] Compiling source4/dsdb/common/util_groups.c
In file included from ../lib/replace/system/time.h:30:0,
                 from ../source4/include/includes.h:33,
                 from ../source4/dsdb/common/util_groups.c:22:
/usr/include/i386-linux-gnu/sys/time.h:61:3: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
The bug is not reproducible, so it is likely a hardware or OS problem.
Waf: Leaving directory '/samba/bin'
Build failed:  -> task failed (err #1): 
    {task: cc util_groups.c -> util_groups_6.o}
make: *** [all] Error 1

Se mais informações forem necessárias, eu as providenciarei para você. Desde já, obrigado.

    
por JnPson 09.09.2013 / 21:31

2 respostas

2

Quando o debian gcc encontra um erro interno, ele tenta executar o código através do núcleo de compilação novamente. Se ele obtiver os mesmos resultados toda vez que ele assumir que realmente é um bug no núcleo do compilador. Se não, então você recebe o "O bug não é reproduzível, por isso é provável que um problema de hardware ou sistema operacional". mensagem.

Isso pode ser causado por um bug no núcleo do compilador que é sensível a algum fator externo, a um bug no kernel ou a um hardware suspeito.

    
por Peter Michale Green 03.11.2013 / 01:07
2

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:

  • step1: gere o arquivo de cabeçalho que é usado na etapa 2

  • step2: execute o gcc para compilar um arquivo .c que inclua o cabeçalho da etapa 1.

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.

    
por jtchitty 04.04.2015 / 00:32