Windows GUI hängt sich auf/stürzt ab

Für allgemeine Fragen zur Programmierung mit PureBasic.
Vi-P
Beiträge: 32
Registriert: 18.01.2013 18:56

Windows GUI hängt sich auf/stürzt ab

Beitrag von Vi-P »

Hi, habe mit einem Programm von mir folgendes Problem:

Zweimal hat sich die Windows GUI während des Laufes eines von mir geschriebenen Programmes teilweise verabschiedet. Die betroffenen Rechner laufen sonst stabil und sind nicht überfrachtet, Windows 10. Es lässt sich dann nichts mehr anklicken, letztlich hilft dann ein Neustart. Das Programm läuft weiter ohne Probleme und übernimmt die vorgesehen Steuerungsaufgaben. Wenn ich das richtig mitbekommen habe, zeigt es auch noch den Ablauf an (Änderungen am Bildschirm). Nur Eingaben sind nicht mehr möglich. Das ganze passiert nur selten, was es schwierig macht, es nachzuvollziehen. Es kommt auch keine Fehlermeldung.

Das Programm benutzt Threads (thread-safe compiliert) von denen jeder mit je einem Netzwerkgerät die TCP/IP Kommunikation macht, aber keine GUI bedient und eine Schleife mit grundlegenden PureBasic GUI Funktionen, die dann Daten für die die Threads in Variablen ablegt. Ein wenig Init und Timing, das wars im Wesentlichen. Insgesamt alles recht statisch programmiert.

Weiß, sind jetzt nicht viel griffige Daten, sollte jemand 'trotzdem' eine Idee dazu haben, wäre super.

mfg Vi-P
Benutzeravatar
mk-soft
Beiträge: 3852
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von mk-soft »

Werden Daten von den Threads an die GUI übermittelt. Wenn Ja wie viele Daten ?
Läuft die GUI EventLoop ohne unterbrechung ?
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
dige
Beiträge: 1238
Registriert: 08.09.2004 08:53

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von dige »

Ich würde erstmal mit dem ProcessExplorer monitoren, was denn so auf dem Rechner passiert.
"Papa, ich laufe schneller - dann ist es nicht so weit."
Axolotl
Beiträge: 272
Registriert: 31.12.2008 16:34

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von Axolotl »

Evtl. kann der Task Manager helfen.
Ansonsten wäre meine Empfehlung bei (dauerhaft durch-)laufenden Programmen ohne GUI eine Art Trace/Logging Funktion einzubauen. Natürlich Ein-/Ausschaltbar. Die Texte entweder in eine Datei schreiben oder mit Hilfe von (s.u.)
Ähnlich wie bei Debug und DebugLevel verschiedene Ebenen der zu loggenden Nachrichten.
Weitere Empfehlung von mir: Rückgabe-Werte von Proceduren auswerten.
Sorry, ich weiß alles keine wirkliche Hilfe bei einem fertigen Programm.

Code: Alles auswählen

; Hint: OutputDebugString_()   sends the message to DebugView() 
;
Procedure Trace(Message.s)
  OutputDebugString_(@Message) 
EndProcedure 
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Vi-P
Beiträge: 32
Registriert: 18.01.2013 18:56

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von Vi-P »

Erst mal danke für die Antworten. Hatte gestern eine kurze Antwort geschrieben. Das senden hat aber wohl aus welchen Gründen auch immer nicht geklappt.

@mk-soft: GUI aufrufe in Threads, das wäre natürlich der Klassiker. Nein die Threads fragen nur eine Variable ab, die auch der Hauptschleife bekannt ist. Wenn das was drin steht, macht die Hauptschleife, wird´s per TCP/IP versendet und die Variable wieder auf 'leer' gesetzt. Kollisionen beim Zugriff auf die Variable fange ich hierbei noch nicht ab, da diese Systembedingt nicht vorkommen sollten. Die GUI Loop läuft, so wie ich das mitbekommen habe, da ja noch Ausgaben erfolgen.

@dige: ProcessExplorer = Taskmanager ?

@Axolotl: Mit dem Taskmanager kann man halt ggf. das Programm abzuwürgen versuchen. Falls man im TM noch was anklicken kann ...

Das Problem ist glaube ich weniger, dass das Programm abstürzt, sondern Windows teilweise zum Absturz bringt. Das Hauptproblem ist allerdings, dass dies nur sehr sporadisch auftritt. Wenn das häufig auftreten würde, hätte ich die Sache schon eingegrenzt und gefixt bzw. falls nicht, mit einer konkreten Frage und dem problematischen Code hier gemeldet. Hatte halt die Hoffnung, dass jemand in das gleiche Problem gelaufen ist oder weiß wodurch das im Windows ausgelöst werden kann. Wie gesagt, das Programm selbst läuft durch, die GUI Aufrufe kehren auch zurück, sonst würde die Programmabläufe nicht in den Aktionen sichtbar werden.
Axolotl
Beiträge: 272
Registriert: 31.12.2008 16:34

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von Axolotl »

IMHO ProcessExplorer und TaskManager sind zwei unterschiedliche Tools.
Ich kenne den ProcessExplorer aus der sysinternals suite.
Der TaskManager ist standard unter windows und zeigt z.B. den Speicherverbrauch. Der sollte über die Zeit nicht dauerhaft ansteigen.
Solche Dinge sind immer ein Indiz dafür, dass der Speicher nicht korrekt zurück gegeben wird.
Unter (modernen) Windows Versionen sind ja direkte Beinflussungen (fast) ausgeschlossen. (Anders als bei den ersten Windows Versionen, wo plötzlich keine Ressourcenn mehr verfügbar waren).

Schwierig hier weitere seriöse Einschätzungen/Prognosen abzugeben.
Trotzdem, vielleicht helfen dir ja meine krausen Gedanken weiter
+ Absturz oder fehlende (verzögerte) Rückmeldung
+ Zugriff auf (einzelne) Ressourcen, die für andere Apps blockiert sind/werden.
+ Welche Programme laufen (noch parallel) wenn der Fehler auftritt.
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
jogo
Beiträge: 120
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Windows GUI hängt sich auf/stürzt ab

Beitrag von jogo »

Ich vermute auch einen falschen Speicherzugriff. Dafür spricht, daß dies nur sporadisch passiert. Vllt. ist irgendwo ein Speicherbereich zu knapp dimensioniert und du schreibst drüber hinaus - und je nachdem, ob da grade von anderen Programm was benutzt wird, kommt es zum Crash. Oder halt, wie Axcolotl schon schrieb, daß Speicher nicht freigegeben oder ungültig ist.
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Antworten