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 !!

questionAnswers(11)

yourAnswerToTheQuestion