Eu tenho uma questão muito interessante e frustrante. A empresa em que trabalho usa um aplicativo para fazer simulação e verificação para engenharia elétrica. Este aplicativo produz saída com base em uma semente aleatória. Uma vez que você tenha a semente aleatória para uma dada simulação, você pode alimentar aquela semente aleatória de volta no aplicativo e obter resultados idênticos. Infelizmente, estamos enfrentando problemas nos quais diferentes distribuições do Linux estão produzindo resultados diferentes, considerando a mesma semente aleatória. Isso é problemático porque os engenheiros que utilizam essas ferramentas confiam na capacidade de reproduzir resultados exatos sempre. Eu devo mencionar que estamos usando exatamente a mesma versão do aplicativo em diferentes distribuições - na verdade, é montado por NFS, então é exatamente o mesmo ponto de instalação que é testado toda vez.
Neste ponto, estou testando com os seguintes sistemas operacionais:
CentOS 5
CentOS 6
SLES 11
openSuSE 11.4
openSuSE 12.1
openSuSE 12.2
Os resultados de alto nível que estou vendo são que o CentOS 5 e o SLES 11 produzem resultados idênticos, e o CentOS 6 e o openSuSE 11.4 / 12.1 / 12.2 produzem resultados idênticos. O CentOS 5 e o SLES 11 são as distribuições listadas como suportadas pelo fabricante do software, então, neste ponto, estamos analisando o resultado que essas duas distribuições produzem como a "correta". Eu não fui capaz de encontrar um conjunto consistente de semelhanças ou diferenças neste momento que me diz o que está acontecendo. Por exemplo, aqui estão as versões do kernel em uso nos diferentes sistemas:
CentOS 5 - 2.6.18
CentOS 6 - 2.6.32
SLES 11 - 3.0.51
openSuSE 11.4 - 2.6.37.6
openSuSE 12.1 - 3.1.10
openSuSE 12.2 - 3.4.11
Então, sem entrar em detalhes sobre quais correções podem ser aplicadas a quais versões de kernel nessas distribuições, eu já posso dizer que não é uma grande mudança entre 2.6 e 3.0, por exemplo, porque o SLES 11 e o CentOS 5 produzem resultados consistentes, ainda que tenham diferentes versões principais do kernel. Eu também olhei para a glibc e descobri que o openSuSE 11.4 e o SLES 11 tem versões muito próximas dos pacotes glibc (2.11.3).
Minha pergunta é a seguinte: onde os próximos lugares devem procurar para rastrear esse problema? Eu comecei a obter saída strace e tentando comparar isso, mas isso é muito demorado e de pouco valor quando a saída strace é muito diferente, mesmo entre distribuições que produzem saída idêntica. Não posso ir muito bem ao fabricante do aplicativo, pois as plataformas com as quais estou tendo problemas estão listadas como não suportadas, portanto, elas apenas me avisam para se perder. Alguma dica de onde ir daqui para rastrear o problema?