Heisenbug: Program WinApi ulega awarii na niektórych komputerach

Proszę pomóż! Jestem naprawdę na wyczerpaniu. Mój program to mały osobisty menedżer notatek (google for „cintanotes”). Na niektórych komputerach (i oczywiście nie posiadam żadnego z nich) ulega awarii z nieobsługiwanym wyjątkiem zaraz po starcie. Nie można powiedzieć nic specjalnego o tych komputerach, z wyjątkiem tego, że mają procesory AMD.

Środowisko: Windows XP, Visual C ++ 2005/2008, surowy WinApi.

Oto, co jest pewne co do tego „Heisenbug”:

1) Awaria występuje tylko w wersji Release.

2) Awaria znika, gdy tylko usuwam wszystkie rzeczy związane z GDI.

3) BoundChecker nie ma skarg.

4) Zapisywanie dziennika pokazuje, że awaria ma miejsce na deklaracji lokalnej zmiennej int! Jak to możliwe? Zepsucie pamięci?

Wszelkie pomysły byłyby bardzo mile widziane!

AKTUALIZACJA: Udało mi się pobrać aplikację debugowaną na „wadliwym” komputerze. Wyniki:

„Nieobsługiwany wyjątek pod 0x0044a26a w CintaNotes.exe: 0xC000001D: Niedozwolona instrukcja.”

i psuje się kod

0044A26A cvtsi2sd xmm1, dword ptr [esp + 14h]

Wydaje się więc, że problem występował w opcji kompilatora „Generowanie kodu / Włącz rozszerzoną instrukcję”. Został ustawiony na „/ arch: SSE2” i zawieszał się na komputerach, które nie obsługiwały SSE2. Ustawiłem tę opcję na „Nie ustawiono”, a błąd zniknął. Uff!

Dziękuję bardzo za pomoc !!

questionAnswers(11)

yourAnswerToTheQuestion