AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debugger Exception mit TOpenPictureDialog

Ein Thema von Whookie · begonnen am 19. Sep 2013 · letzter Beitrag vom 27. Sep 2013
Antwort Antwort
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#1

Debugger Exception mit TOpenPictureDialog

  Alt 19. Sep 2013, 13:03
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:
  1. Delphi starten, BmpTst.dpr öffnen und im Debugmodus ausführen.
  2. Das Ereignisprotokoll sichtbar anordnen...
  3. 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).
  4. "OpenPictureDialog..." anklicken, die Vorschau sollte eingeblendet sein und Ansicht auf "Große Symbole" stellen.
  5. Die "Error_mini.bmp" einmal kurz anklicken damit sie auch in der Vorschau sichtbar wird.
  6. Doppelklick auf die Bitmap ...
  7. 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.
  8. "OpenPictureDialog..." anklicken und Doppelklick auf "Error_mini.bmp" (manchmal wird die Bitmap und die Ordner nicht mehr richtig als Symbol dargestellt)
  9. 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!?
Angehängte Dateien
Dateityp: 7z BmpTst.7z (3,7 KB, 1x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Debugger Exception mit TOpenPictureDialog

  Alt 19. Sep 2013, 13:27
Ich glaube nicht das der Fehler Ursächlich bei Delphi liegt.
An dieser Stelle gabs schon öfter Probleme mit Virenscanner oder Windows-Explorer Plugins/Extensions.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

AW: Debugger Exception mit TOpenPictureDialog

  Alt 19. Sep 2013, 19:26
Alle Shell Dialoge haben ein Problem damit, wenn die Anwendung (ggf. auch in einer Komponente versteckt) CoInitializeEx(COINIT_MULTITHREADED)aufruft.

Zudem gibt es mit den Shell Dialogen bei fast allen Delphi Programmen sporadische Crashs (die sich wie HALT(0) verhalten) auf Servern, wenn auf den Servern Terminalservices installiert sind und die Dateiausführungsverhinderung aktiviert wurde.
VB, C++ und C# Programme haben dieses Problem nicht.
Die Delphi Programme (also alle die ich kenne, auch große Allerweltprogramme) spacken beim T???Dialog.Execute in der o.a. Konstellation mit 50% Wahrscheinlichkeit ab.
Getestet auf Server 2000 bis Server 2012 von Delphi 7 bis XE4. XE5 wird damit auch Sorgen haben.

Geändert von jensw_2000 (19. Sep 2013 um 19:30 Uhr)
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Debugger Exception mit TOpenPictureDialog

  Alt 27. Sep 2013, 08:47
Zwischenbericht...
Anscheinend spielt es für Windows 7 x64 keine Rolle ob CoInitialize(nil) (Standard) oder CoInitializeEx(..) aufgerufen wird, unabhängig davon ob COINIT_MULTITHREADED oder COINIT_APARTMENTTHREADED benutzt wird, wenn der Rechner den Fehler bringt, dann kommt er in allen drei Fällen.

Mittlerweile habe ich auch einen Rechner auf dem der Fehler nicht auzutreten scheint und zu meinem Erstaunen ist es einer der am längsten mit Windows 7 läuft und bei weitem die meisten Programme installiert hat (weil ich ihn auch privat nutze).

Zu den anderen Rechnern ist der Stand so, dass es eigentlich keinen echten Ansatzpunkt gibt. Einer der Rechner ist (fast) neu installiert und enthält nur TortoiseSVN und Avira AntiVir als Programme die sich auch in den Explorer hängen. Daneben ist nur MS Office 2010, Notepad++ und Delphi XE4 installiert.
Das deinstallieren von TortoiseSVN und AntiVir hatte im Prinzip den Effekt, dass es nun einfach länger dauert (mehrere Versuche) bis es zum Fehler kommt, er tritt aber trotzdem auf.

Interessant wäre es in diesem Zuge ein System neu aufzusetzen und dann ausschließlich Delphi zu installieren...

Eine weitere Frage ist natürlich, was im Release bzw. ohne Debugger im Hintergrund passiert? Die OLE-Dll scheint ja eine Exception zu erzeugen die nicht in der DLL abgefangen wird also eventuell ein Speicher- und/oder Ressourcenleck darstellt?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz