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()


Anmelden zum Antworten