CDaoRecordset - Absturz
-
Hi und hilfe.
Ich weiß nicht wieso aber mein Programm stürtzt beim Beenden ab.
Die Fehlermeldung ist: Unbehandelte Ausnahme in (MFCD42D.DLL): 0xC0000005: Access Violation.Im Quellcode ist es hier:
if (m_pICDAORecordsetGetRows != NULL) { m_pICDAORecordsetGetRows->Release();Das ist in der Datei "DAOCORE.CPP".
Wenn ich die Datenbank mit m_db.Close(); schließe, dann stürtr es ab. Tue ich das nicht stürzt es auch ab. Immer an der selben stelle.
Dabei ha hat das bis jetzt immer funktioniert. ich weiß nicht wieso auf einmal nicht.
-
an der daocore.h wirds bestimmt nicht liegen...
Schau mal im Call Stack welche Stelle das in deinem Sourcecode ist.
Kann es sein das du nach dem Close noch Recordsets releasen willst ? Bzw vor dem Close noch nicht alle Korrekt geschlossen/releast hast.
Eventuell arbeitest du auch mit Threads? Vieleicht bekommt dadurch einer nicht mit das die Datenbank geschlossen ist.
-
DaRpH schrieb:
an der daocore.h wirds bestimmt nicht liegen...
Schau mal im Call Stack welche Stelle das in deinem Sourcecode ist.
Kann es sein das du nach dem Close noch Recordsets releasen willst ? Bzw vor dem Close noch nicht alle Korrekt geschlossen/releast hast.
Eventuell arbeitest du auch mit Threads? Vieleicht bekommt dadurch einer nicht mit das die Datenbank geschlossen ist.
Hallo!
Danke für Deine Antwort!
Ich verwende einen Thread. Aber der ist schon durchgelaufen wenn das Programm beendet wird. Der Fehler tritt beim Schlißen der Datenbank auf. Also eine Zeile vor EndDialog sozusagen. Ich glaube nicht dass da noch etwas releast wird.Was meinst Du mit Call Stack? Ist das die Aufrufliste?
Wenn ja, da setht das hier drin:
Vor dem Absturz:CDBCheckUpDlg::DatenbankSchliessen() line 357
CWnd::OnWndMsg(unsigned int 0x00000700, unsigned int 0x00000000, long 0x00000000, long * 0x0012f494) line 1826 + 17 bytes
CWnd::WindowProc(unsigned int 0x00000700, unsigned int 0x00000000, long 0x00000000) line 1596 + 30 bytes
AfxCallWndProc(CWnd * 0x0012f734 {CDBCheckUpDlg hWnd=???}, HWND__ * 0x000304da, unsigned int 0x00000700, unsigned int 0x00000000, long 0x00000000) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x000304da, unsigned int 0x00000700, unsigned int 0x00000000, long 0x00000000) line 379
AfxWndProcBase(HWND__ * 0x000304da, unsigned int 0x00000700, unsigned int 0x00000000, long 0x00000000) line 220 + 21 bytes
USER32! 77d18734()
USER32! 77d18816()
USER32! 77d189cd()
USER32! 77d196c7()
CWinThread::PumpMessage() line 853
CWnd::RunModalLoop(unsigned long 0x00000004) line 3489 + 19 bytes
CDialog::DoModal() line 539 + 12 bytes
CDBCheckUpApp::InitInstance() line 61 + 11 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f22, int 0x00000001) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f22, int 0x00000001) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816fd7()Bei dem Abszurz:
DAO350! 044e2cc2()