Einzelnen Beitrag anzeigen

OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#1

Absturz im Save / Open Dialog

  Alt 9. Dez 2015, 10:43
Hallo Zusammen,

Wir haben in unserer Software momentan vermehrt Abstürze, wenn ein User einen Open oder Save Dialog öffnen möchte.

Diese Abstürze passieren nicht reproduzierbar und nur manchmal. Nach vielem debuggen und suchen habe ich festgestellt, dass dies etwas mit dem "InitialPath" zu tun haben könnte. Bei vielen Kunden hat es eine Verbesserung gebracht, wenn ich den InitialPath fest auf ein Verzeichnis gesetzt habe, von dem ich weiß dass es existiert. Das ist allerdings auch nur ein Workarround für etwas das meiner Meinung nach funktionieren sollte.

Lustigerweise ist mir eine andere Software die wir gekauft haben heute abgestrüzt, die offenbar a) mit Delphi programmiert ist und b) MadExcept nutzt. Anhand des CallStacks kann ich sehen, dass auch diese Software auf die gleiche Art und Weise beim öffnen des Dialogs abstürzt als auch unsere.

Weiß jemand zufällig ob der Open / Save Dialog buggy ist oder wie man das beheben kann?

Anbei mal ein Beispiel Callstack. Wie man sieht, sitzt der Fehler offenbar tief in VCL / Windows API.
".Start" ist der letzte Teil meines Source-Codes, dort wird das Execute vom Dialog aufgerufen.

Code:
77720196 +00e ntdll.dll                                               NtWaitForMultipleObjects
76f215f1 +0fa KERNELBASE.dll                                          WaitForMultipleObjectsEx
755f1a03 +089 kernel32.dll                                            WaitForMultipleObjectsEx
77710107 +02b ntdll.dll                                               KiUserCallbackDispatcher
75e6f5b7 +00e USER32.dll                                              WaitMessage
75e6ce85 +031 USER32.dll                                              DialogBoxIndirectParamAorW
75e6cc09 +016 USER32.dll                                              DialogBoxIndirectParamW
0066469f +3ab Prog.exe Vcl.Dialogs                                    TCustomFileDialog.Execute
00661451 +199 Prog.exe Vcl.Dialogs                                    TFileDialogWrapper.Execute
006620ae +0d6 Prog.exe Vcl.Dialogs                                    TOpenDialog.DoExecute
0066243b +00f Prog.exe Vcl.Dialogs                                    TSaveDialog.Execute
00660ad1 +035 Prog.exe Vcl.Dialogs                                    TCommonDialog.Execute
01152ee8 +160 Prog.exe gtFRXportIntf                          393 +16 TgtFRXport_Base.Start
Die Fehlermeldungen sind immer anders, der Callstack immer gleich:
Code:
Zugriffsverletzung bei Adresse 60561493 in Modul 'FunDisc.dll'. Ausführung von Adresse 60561493.

oder

Zugriffsverletzung bei Adresse 609412D0 in Modul 'msxml6.dll'. Ausführung von Adresse 609412D0.
Unsere Software wurde mit XE6 und Seattle 10 kompiliert, beide Versionen führen zu dem Verhalten.
  Mit Zitat antworten Zitat