Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Programm wird einfach geschlossen - Kernelbase.DLL (https://www.delphipraxis.net/200659-programm-wird-einfach-geschlossen-kernelbase-dll.html)

hoika 13. Mai 2019 21:08

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Hallo,
hier hilft doch nur ein extensives Loggen (Textdatei oder Netzwerk).

jaenicke 14. Mai 2019 06:04

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Ich bin mir da nicht so sicher, ob Logging helfen würde. Denn wenn das selbst von MadExcept nicht gefunden wird...
Deshalb wäre das für mich das letzte Mittel angesichts des Aufwands.

Ich würde es einmal mit Eurekalog versuchen. Das hat bei uns mehr abgefangen.

Und dann macht es Sinn aus den Debuginformationen .dbg Dateien für Windows zu erstellen, damit Windows auch richtige Stacktraces schreiben kann. Dazu sollten Dumps für Crashes aktiviert werden, damit Stacktraces und weitere Informationen auch geschrieben werden:
https://docs.microsoft.com/en-us/win...ser-mode-dumps
Zumindest solltest du so Speicheradressen bekommen, an denen du nachschauen kannst.

OlafSt 14. Mai 2019 10:35

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Vielen Dank für die vielen Anregungen und Ideen !

Um die gestellte Frage zu beantworten: Das Programm startet, liest ein paar Daten aus einer INI-Datei (TMemIniFile). Dann wird eine Verbindung zur Datenbank hergestellt und ein paar Fenster im Hintergrund werden erzeugt. Anschließend kommt der Login-Dialog, der auf eine Reaktion wartet. Etwa 7 Minuten später macht es ZAPP und die Anwendung ist weg.

Bitte nicht mosern, das man die Fenster auch nach dem Login-Dialog erzeugen könnte... Ich hab den Mist nicht verzapft, bin erst seit eineinhalb Jahren damit beschäftigt, den z.T. heftigen Unsinn da geradezubiegen...

Ob es wirklich am Fast-User-Switching liegt, wissen wir noch nicht. Aber es ist uns aufgefallen, das dies im Eventlog anhand des Timestamps quasi direkt vor dem Stack Overrun unserer Anwendung erfolgt. Remote Debugging ist etwas kompliziert, denn D2007 hat sowas noch nicht. Aber ein Blick auf Eurekalog kann nicht schaden und auch den Weg der DBG-Files werden wir versuchen zu verfolgen. Ist nur die Frage, wie man D2007 dazu bringt, sowas zu erzeugen ?

TiGü 14. Mai 2019 10:57

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Zitat:

Zitat von OlafSt (Beitrag 1432193)
Remote Debugging ist etwas kompliziert, denn D2007 hat sowas noch nicht.

Ohne jetzt Delphi 2007 direkt vor mir zu haben, aber wenn mich meine Erinnerung nicht täuscht, dann gab es das damals schon.


EDIT: Ja, das gab es damals schon
http://docs.embarcadero.com/products...oteov_xml.html

Delphi.Narium 14. Mai 2019 11:34

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Ging schon mindestens seit Delphi 7.

Eine Anleitung dazu oder zumindest ein hilfreicher Text? Remote Debugger

Dalai 14. Mai 2019 18:55

AW: Programm wird einfach geschlossen - Kernelbase.DLL
 
Zitat:

Zitat von OlafSt (Beitrag 1432193)
Dann wird eine Verbindung zur Datenbank hergestellt und ein paar Fenster im Hintergrund werden erzeugt. Anschließend kommt der Login-Dialog, der auf eine Reaktion wartet. Etwa 7 Minuten später macht es ZAPP und die Anwendung ist weg.

Und was machen die erzeugten Forms in dieser Zeit? Irgendein Timer aktiv? Reagieren sie auf Windows Messages?

Eine Anwendung, die nichts tut, sollte nicht abstürzen. Daher denke ich, dass die Anwendung irgendetwas tut. Denkbar ist z.B. die regelmäßige Anforderung von Speicher/Ressourcen (ohne Freigabe dieser), was irgendwann zur Erschöpfung irgendwelcher Ressourcen führt.

Zitat:

Ob es wirklich am Fast-User-Switching liegt, wissen wir noch nicht. Aber es ist uns aufgefallen, das dies im Eventlog anhand des Timestamps quasi direkt vor dem Stack Overrun unserer Anwendung erfolgt.
Löst die Anwendung denn den Fast User Switch aus? Bisher habe ich deine Ausführungen so verstanden, dass nur zufällig zum gleichen Zeitpunkt zwei verschiedene Dinge - Beendigung der Anwendung und Fast User Switch - passieren.

Ist das Verhalten der Anwendung auf einem anderen System und/oder anderen Windows(-Version) nachvollziehbar?

Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.
Seite 2 von 2     12   

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