Heisenbug: programa WinApi falha em alguns computadores
Por favor ajude! Estou realmente no meu juízo final. Meu programa é um pequeno gerenciador de anotações pessoais (google for "cintanotes"). Em alguns computadores (e é claro que eu não possuo nenhum deles) ele cai com uma exceção não tratada logo após o início. Nada de especial sobre esses computadores poderia ser dito, exceto que eles tendem a ter processadores da AMD.
Ambiente: Windows XP, Visual C ++ 2005/2008, WinApi bruto.
Aqui está o que é certo sobre este "Heisenbug":
1) O acidente ocorre apenas na versão Release.
2) O acidente desaparece assim que eu removo todas as coisas relacionadas a GDI.
3) BoundChecker não tem reclamações.
4) Escrevendo um log mostra que o acidente acontece em uma declaração de uma variável int local! Como poderia ser? Corrupção de memória?
Qualquer idéia seria muito apreciada!
ATUALIZAÇÃO: Consegui que o aplicativo fosse depurado em um PC "defeituoso". Os resultados:
"Exceção não tratada em 0x0044a26a em CintaNotes.exe: 0xC000001D: Instrução Ilegal."
e quebra de código em
0044A26A cvtsi2sd xmm1, dword ptr [esp + 14h]
Portanto, parece que o problema estava na opção de compilador "Geração de código / Ativar conjunto de instruções aprimorado". Ele foi definido como "/ arch: SSE2" e estava travando nas máquinas que não suportavam SSE2. Eu configurei esta opção para "Not Set" e o bug desapareceu. Ufa!
Muito obrigado a todos pela ajuda !!