Hi,
ich habe ein extrem seltsames Phänomen mit D2007, DXE2, DXE4 (prof) und DXE5(arch) auf bisher 5 Rechnern nachvollziehen können. Reproduzieren ließ es sich bisher wie folgt:
- Delphi starten, BmpTst.dpr öffnen und im Debugmodus ausführen.
- Das Ereignisprotokoll sichtbar anordnen...
- Warten bis im Ereignisprotokoll: Thread-Start/-Ende Meldungen (min. 4 Stk) erscheinen. Das dauert je nach Rechner ca. 1-3 Minuten (wobei ich in der Wartezeit immer andere Programme, wie z.B. den Browser in den Vordergrund geholt habe).
- "OpenPictureDialog..." anklicken, die Vorschau sollte eingeblendet sein und Ansicht auf "Große Symbole" stellen.
- Die "Error_mini.bmp" einmal kurz anklicken damit sie auch in der Vorschau sichtbar wird.
- Doppelklick auf die Bitmap ...
- Warten (1-3 Minuten) bis im Ereignisprotokoll wieder Thread-Start/-Ende Meldungen erscheinen (beim zweiten Mal sind das wesentlich mehr als beim ersten Mal). Hier auf jeden Fall warten bis keine neuen Meldungen kommen, erst dann weiter zum nächsten Punkt.
- "OpenPictureDialog..." anklicken und Doppelklick auf "Error_mini.bmp" (manchmal wird die Bitmap und die Ordner nicht mehr richtig als Symbol dargestellt)
- Weiter bei Punkt 7.
Meist nach dem zweiten Öffnen des Dialogs bleibt der Debugger stehen mit einer
Access Violation und einem read at 0xfeeefeee und folgendem Stack-trace:
:752dc57f ; C:\Windows\syswow64\ole32.dll
:752e52db ; C:\Windows\syswow64\ole32.dll
:752e52bc ; C:\Windows\syswow64\ole32.dll
:752e531a ; C:\Windows\syswow64\ole32.dll
:75317cb5 ; C:\Windows\syswow64\ole32.dll
:75317bf6 ; C:\Windows\syswow64\ole32.dll
:752ff069 ; C:\Windows\syswow64\ole32.dll
:75317237 ole32.CoUninitialize + 0xa0
:5170314a ; C:\Windows\SysWOW64\NetworkItemFactory.dll
:750a46bc ; C:\Windows\syswow64\SHLWAPI.dll
:76363677 kernel32.BaseThreadInitThunk + 0x12
:770a9f42 ntdll.RtlInitializeExceptionChain + 0x63
:770a9f15 ntdll.RtlInitializeExceptionChain + 0x36
Es scheint das einige Rechner länger brauchen bis der Fehler auftritt (bisher bis zu 5 Minuten, es könnte aber auf anderen Rechnern noch länger dauern, entscheident ist der Thread-Start/-Ende Zyklus im Ereignisprotokoll).
Auch habe ich Testläufe beobachtet bei denen nach mehreren Versuchen kein Fehler ausgelöst wird. Nach 5-10 Versuchen habe ich abgebrochen, Delphi neu gestartet und das Experiment wiederholt.
Bis DXE4 enthalten alle IDEs einige hausinterne Komponenten + TChart Vollversion. DXE5 ist eine frische Installation ohne 3rd Party Komponenten. Alle Rechner laufen unter Windows 7 64bit mit allen aktuellen Patches, das Programm selber ist 32bit. Es liegt der Schluß nahe, dass der Fehler durch Windows und eventuell anderen installierten Programme ausgelöst wird allerdings habe ich dafür keine Anhaltspunkte.
Sobald eines der Ereignisse OnClose, OnIncludeItem oder OnShow des Dialogs benutzt wird, entfällt der Vorschaubereich (es dürfte wohl intern ein anderer Dialog erzeugt werden?) und auch die Schutzverletzung kann nicht mehr provoziert werden.
Vielleicht können das ja auch ein paar von Euch nachvollziehen oder Hinweise liefern woher das Problem kommen könnte!?