[VC] Absturz beim Beenden eines Programmes

03/06/2010 - 23:57 von Peter Mairhofer | Report spam
Hallöchen!

Ich möchte mein (MFC) Programm bei fatalen Fehlern mit einer
Fehlermeldung quittieren. Das soll unabhàngig vom Zustand sein (d.h.
egal ob ein Hauptfenster bereits existiert oder nicht).

Dafür habe ich folgende Funktion geschrieben:

void ExitMe()
{
CWnd *pMainWnd = AfxGetMainWnd();
if(pMainWnd)
pMainWnd->PostMessage(WM_CLOSE);
else
PostQuitMessage(0);
}

Nun rufe ich diese Funktion beim Start in meinem View, genauer CHtmlView
auf und zwar in CHtmlView::OnNavigateError.

Das hat das letzte Mal als ich es probiert habe immer problemlos
funktioniert (was aber schon lange her sein kann).

Auf einmal ist es aber so, dass das Programm nach dem Call einfach
abstürzt! Ich habe es im Debugger gestartet und den Breakpoint auf
ExitMe() gesetzt. Die Funktion làuft durch, dann kommen tonnenweise
irgendwelche MFC Frameworkfunktionen bis irgendwann mal kein Code mehr
verfügbar ist. Ich drücke auf den Play-Button des Debuggers und erhalte
folgende Meldung:

"Unbehandelte Ausnahme bei 0x41265de4 in Test.exe: 0xC0000005:
Zugriffsverletzung-Leseposition 0xfeeefef6."

Ein Klick auf "Weiter" àndert nichts, bei "Unterbrechen" komme ich in
die Funktion CThreadLocalObject::GetData() und ein grüner Codezeiger
steht bei der Zeile:


CNoTrackObject* pValue =
(CNoTrackObject*)_afxThreadData->GetThreadValue(m_nSlot);

Der grüne Codezeiger bedeutet: "Der Code hat eine andere Funktion
aufgerufen. Wenn diese Funktion beendet ist, wird diese Anweisung
ausgeführt".

Das hatte ich noch nie...

Gibt es eine Chance den Fehler zu finden? Beende ich die Anwendung
vielleicht nur falsch?

LG,
Peter
 

Lesen sie die antworten

#1 Robert Hartmann
04/06/2010 - 10:06 | Warnen spam
Hallo,

Am 03.06.2010 23:57, schrieb Peter Mairhofer:
Hallöchen!

Ich möchte mein (MFC) Programm bei fatalen Fehlern mit einer
Fehlermeldung quittieren. Das soll unabhàngig vom Zustand sein (d.h.
egal ob ein Hauptfenster bereits existiert oder nicht).



[...]

Nun rufe ich diese Funktion beim Start in meinem View, genauer
CHtmlView auf und zwar in CHtmlView::OnNavigateError. Das hat das
letzte Mal als ich es probiert habe immer problemlos funktioniert
(was aber schon lange her sein kann).



[...]

Gibt es eine Chance den Fehler zu finden? Beende ich die Anwendung
vielleicht nur falsch?



Ich rate mal einfach...

Du hast den IE8 installiert und er bzw. einige dlls von diesem funken
dir dazwischen?

Als es "früher" noch funktionierte gab es noch keinen IE8.

Gruß Robert

Ähnliche fragen