AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Nach Timer.Enable killt sich das Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Nach Timer.Enable killt sich das Programm

Ein Thema von Rupert · begonnen am 5. Sep 2021 · letzter Beitrag vom 11. Okt 2021
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#31

AW: Nach Timer.Enable killt sich das Programm

  Alt 15. Sep 2021, 19:49
In diesem Kontext eine Zwischenfrage: verwendet das Programm zufälligerweise Application.ProcessMessages? Das wird ja gerne mal reingehauen, wenn man den UI-Thread viel arbeiten lässt, und hat bei mir schnell dahingerotzten Timerdingern auch schonmal was kaputtgemacht, bevor ich gelernt habe, die Finger davon zu lassen. Deswegen ja auch der Tipp, die eigentliche Funktionalität per PostMessage in ner anderen Methode zu triggern, um aus dem Kontext dieser vom Timer aufgerufenen Methode rauszukommen.
ProcessMessages - nein

Zitat:
Aber schau mal am Anfang, wie alt das ganze ist. 1997 gab es noch keinen Arduino. Ein Hutschienen-PC mit Goldcap statt Batterie und EEPROM war's da eher... wobei das dann TP statt Delphi noch gewesen wäre.
-Ich verwende die Arduino NANO's als Temperaturmesser in den Räumen. Sie senden mir seriell die Temperaturdaten auf meine Steuerplatine.
Die Bilder sollen ein wenig den Umfang erkennen lassen.
Wichtig war schon immer der remote Zugriff, weil wir zwei Ferienwohnungen haben, und die Heizung entsprechend aktivieren/deaktivieren.

-es war von Anfang an Delphi 4 und dann 5

https://www.delphipraxis.net/attachm...1&d=1631727774
https://www.delphipraxis.net/attachm...1&d=1631727774
https://www.delphipraxis.net/attachm...1&d=1631728117
Miniaturansicht angehängter Grafiken
schaltplan-raumtemperaturanzeige.jpg   img_4619.jpg   heizung.png  

Geändert von Rupert (15. Sep 2021 um 19:51 Uhr)
  Mit Zitat antworten Zitat
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#32

AW: Nach Timer.Enable killt sich das Programm

  Alt 15. Sep 2021, 20:08
Ich glaube, die Ursache gefunden zu haben.
Die Software läuft nämlich seit Samstag Abend fehlerfrei.

Was habe ich geändert?

Es gibt 3 Variable, die in der Hauptschleife verändert werden.
Hauptschleifencounter, Regel_intervall_ist und Speicherintervall_ist.

Alle drei habe ich, zurück wie bisher, auf Integer geändert.
Ich hatte sie - fragt nicht was mich geritten hat - auf Shortint geändert, da sie ohnedies nur bis max. 60 zählen.
Nachdem ich protokolliere, was ich alles geändert habe, kam ich (während meines Urlaubs) auf die Idee, alle neuen Änderungen der Reihe nach wieder zurückzustellen.
Am Samstag abend habe ich dann über den VPN-Zugriff auf meinen PC neu compiliert und die Software auf den Heiz-PC übertragen - seither läuft sie unentwegt.

Ich hoffe, dass dies der Fehler gewesen ist, da die weiteren Änderungen die Photovoltaik-Daten und die Heizkessel-Daten betreffen und dort wurden die Schleifen stets korrekt abgearbeitet.
Warum ein Shortint zu einem Fehler führt - keine Ahnung, da die Variablen niemals unter 0 oder über 61 gehen.
Aber egal - ich schließe den Thread aber noch nicht - wer weiß...

Vielen Dank für die Tipps, die immerhin zur Eingrenzung geführt haben
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#33

AW: Nach Timer.Enable killt sich das Programm

  Alt 15. Sep 2021, 21:55
da die Variablen niemals unter 0 oder über 61 gehen.
Wenn du vielleiht einen Übertragungsfehler hast, könnte es vielleicht sein, dass die Werte außerhalb deines o.g Bereiches ankommen.
Vielleicht ist das eine Ursache.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#34

AW: Nach Timer.Enable killt sich das Programm

  Alt 16. Sep 2021, 08:17
Mit "killt sich das Programm" ist doch ein Absturz gemeint?
Die Beschreibung hört sich aber jetzt eher nach eine Festhängen in einer Endlosschleife an.

Hauptschleifencounter wird bei jedem Aufruf des Timers erhöht, aber scheinbar niemals zurück gesetzt.
Natürlich läuft der irgendwann über und wird negativ.
Dann dauerrt es natürlich ewig bis der wieder positiv und größer 10 wird.
Im Prinzip könnte das auch mit Integer passieren, dauert halt 65000 mal so lange.
  Mit Zitat antworten Zitat
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#35

AW: Nach Timer.Enable killt sich das Programm

  Alt 19. Sep 2021, 15:36
Hauptschleifencounter wird bei jedem Aufruf des Timers erhöht, aber scheinbar niemals zurück gesetzt.
Habe ich berreits hier kommentiert
  Mit Zitat antworten Zitat
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#36

AW: Nach Timer.Enable killt sich das Programm

  Alt 3. Okt 2021, 20:06
Neue Erkenntnisse:

Also die Variablen habe ich vorerst nicht als Verursacher des Absturzes isolieren können.

Deshalb habe ich nun den Processmonitor mitlaufen lassen und dabei festgestellt, dass der Absturz ähnlich damit ist, als würde jemand den Menüpunkt "Beenden" klicken.
Ähnlich deshalb, weil nach dem Processname 17:56:11 1087389 (CloseFile) noch Dinge geschehen, die beim manuellen "Beenden" vom Monitor nicht aufgezeichnet wurden.

Heute um 17:56:11 war es so weit. (siehe Logfile-1.txt)

Wenn man das "X" rechts oben klickt, sieht dass Ende des Programms wie in Logfile-2.txt aus
und beende ich das Programm mit dem Menüpunkt "Beenden" dann ist es identisch mit dem "X"-Click - siehe "Logfile-3.txt".

Resumeé:
Beim normalen Beenden des Programms oder dem "X" ist nach 4 Zeilen Schluss mit allem.
Verabschiedet sich das Programm, dann werden noch hinterher die Datenbanken geschlossen (Heizdaten.abs und Fehlersuche.abs) wie man sehen kann.

Kein Remote-Acccess, der mir einen "Streich" spielen würde:
Der "Windows-Remote-Access" ist deaktiviert - auch den "VNC-Access" habe ich deaktiviert. Der Heiz-PC hat in der Cisco-ASA eine Sperre, damit er nicht ins Internet kann - nur NTC wird durchgelassen. Auch passieren keine TCP-Aktivitäten, das würde der Syslog aufzeichnen.

Ich blick`nicht durch, was da in der Software vorgeht...

https://www.delphipraxis.net/attachm...1&d=1633284152

https://www.delphipraxis.net/attachm...1&d=1633284152

https://www.delphipraxis.net/attachm...1&d=1633284152
Angehängte Dateien
Dateityp: txt Logfile-1.txt (6,3 KB, 9x aufgerufen)
Dateityp: txt Logfile-2.txt (11,7 KB, 7x aufgerufen)
Dateityp: txt Logfile-3.txt (9,5 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#37

AW: Nach Timer.Enable killt sich das Programm

  Alt 4. Okt 2021, 22:58
Deshalb habe ich nun den Processmonitor mitlaufen lassen und dabei festgestellt, dass der Absturz ähnlich damit ist, als würde jemand den Menüpunkt "Beenden" klicken.
Nein, das ist ganz und gar nicht ähnlich, sondern typisch für einen Absturz.

Absturz:
Code:
ReadFile Datenbank.xyz
Thread Exit
Process Exit
CloseFile Aktueller Ordner
CloseFile Datenbank.xyz
Regulärer Exit:
Code:
ReadFile Datenbank.xyz
CloseFile Datenbank.xyz
Thread Exit
Process Exit
CloseFile Aktueller Ordner
Merkst du den Unterschied? Beim Absturz werden die Dateihandles erst nach dem Beenden des Prozesses automatisch durch Windows aufgeräumt. Beim regulären Beenden macht das Programm das vorher.

Der Fehler könnte beim Zugriff auf die Fehlersuche.abs oder in den Events davor (die hier nicht dabei sind) passiert sein.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#38

AW: Nach Timer.Enable killt sich das Programm

  Alt 5. Okt 2021, 10:46
Der Fehler könnte beim Zugriff auf die Fehlersuche.abs oder in den Events davor (die hier nicht dabei sind) passiert sein.
Danke - werde dem nachgehen
  Mit Zitat antworten Zitat
Rupert

Registriert seit: 10. Nov 2013
23 Beiträge
 
#39

AW: Nach Timer.Enable killt sich das Programm

  Alt 6. Okt 2021, 19:21
Ich finde absolut nichts...

hier sind die letzten 2 Sekunden vor dem Ende
"Process Profiling" in Heizung2020.exe ist der Timer, und ist das letzte Ereignis vor dem Absturz.
Der Absturz passierte um 17:49:21.

vlt. sieht jemand etwas anhand der beiden Logfiles.
Logfile6-10-21-a.txt ist nur der Log von Heizung0202.exe, Logfile6-10-21-alles.txt beinhaltet auch die anderen Programme.

https://www.delphipraxis.net/attachm...1&d=1633540806
https://www.delphipraxis.net/attachm...1&d=1633540806
Angehängte Dateien
Dateityp: txt Logfile6-10-21-a.txt (32,6 KB, 3x aufgerufen)
Dateityp: txt Logfile6-10-21-alles.txt (20,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#40

AW: Nach Timer.Enable killt sich das Programm

  Alt 7. Okt 2021, 10:10
Findest Du dazu
Code:
"17:49:21,6079279","Heizung2020.exe","1016","Process Exit","","SUCCESS","Exit Status: -1073741819, User Time: 1496.0712448 seconds, Kernel Time: 526.5471376 seconds, Private Bytes: 17.899.520, Peak Private Bytes: 22.761.472, Working Set: 21.819.392, Peak Working Set: 26.808.320"
was im Ereignislog?

Ansonsten Suchmaschine Deiner Wahl mal mit exit status -1073741819 füttern. Meine behauptet, es gäbe rund 48.300.000 Ergebnissen. Keine Ahnung, wie man das jetzt noch sinnvoll für Deine konkrete Problematik eingrenzen kann. Es scheint aber ein grundsätzliches Problem für diverse Software zu sein, das zuweilen auftreten kann.

Hexadezimal entspricht -1073741819 = FFFFFFFFC0000005

Der Betriebssystemhersteller meint dazu:
Zitat:
The exit code -1073741819 in hex is 0xC0000005. If you look up this code in Microsoft's documentation (NTSTATUS Values) you will see that it indicates that your program was terminated due to an access violation. This error can occur for a variety of reasons, including de-referencing a NULL pointer or referencing an invalid address.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 13:35 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