Speicherproblem / First Chance Exception



  • Hallo!

    Ich habe vor kurzem eine Shell Namespace Erweiterung mit MFC programmiert.

    Nur leider stürzt der Explorer immer an einer Stelle ab. Das passiert immer, wenn ich das Explorer Fenster schließe.

    Folgende Fehlermeldung erscheint:

    First-chance exception at 0x008c2cd5 in explorer.exe: 0xC0000005: Access violation reading location 0xfeeefef6.
    Unhandled exception at 0x008c2cd5 in explorer.exe: 0xC0000005: Access violation reading location 0xfeeefef6.

    Der Debugger springt auf folgende Stelle:

    008C2CD5 call dword ptr [ecx+8]

    und im CallStack wird diese DLL angezeigt:

    > SHDOCVW.DLL!008c2cd5()

    Nun weiß ich nicht woran das Problem liegt - die letzte Funktion die von meiner DLL aus, aufgerufen wird ist folgende:

    STDMETHODIMP_(ULONG) CFolderObj::Release()
    {
    	DoTrace(1,1,__FILE__, __LINE__, "CeNsExt | CFolderObj::Release", NULL);
    
    	if(--m_ulRef == 0)
    	{
    		delete this;
    		return 0;
    	}
    	return m_ulRef;
    }
    

    und natürlich dann den Destruktor:

    CFolderObj::~CFolderObj()
    {
    	// To terminate the application when all objects created with
    	// 	with OLE automation, the destructor calls AfxOleUnlockApp.
    
    	AfxOleUnlockApp();
    
    	DoTrace(1,1,__FILE__, __LINE__, "CeNsExt | CFolderObj::~CFolderObj", NULL);
    
    	if(m_pidlFQ)
    	{
    		m_pPidlMgr->Delete(m_pidlFQ);
    		m_pidlFQ = NULL;
    	}
    	if(m_pMalloc)
    	{
    		m_pMalloc->Release();
    	}
    
    	if(m_pPidlMgr)
    	{
    		delete m_pPidlMgr;
    	}
    }
    

    Wenn ich diese beiden Funktionen debugge, dann läuft der Debugger durch, bis ich dann wieder zu der oben genannten Stelle komme.

    Hat jemand eine Idee?

    Danke im voraus.

    lG


  • Mod

    Vergiss die First Chance Exception. In einer der Windows Komponenten wird eine Exception geworfen und offensichtlich auch behandelt. Der Debugger bekommt nur grundsätzlich jede Exception zuerst angeboten (First chance).
    Problematisch wäre es wenn diese Exception nicht behandelt wird. Da sie behandelt wird solltest Du davon ausgehen, dass eben auch mit einer Exception an dieser Stelle gerechnet wurde. Das ist kein Fehler!



  • Danke für die Antwort!

    Starte ich das Programm jedoch nicht im Debugger (aber mit der Debug DLL), dann stürzt der komplette Explorer ab (auch die Taskleiste verschwindet). Und es kommt die Fehlermeldung "Falls diese Problem weiter besteht, starten sie ihren Computer neu" o.ä.


Log in to reply