Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Script(e) brechen ohne Fehler ab



  • Please log in to reply
24 replies to this topic
Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

Hallo, ich habe ein Problem.

 

Ich lasse folgende Scripte in einer Endlosschleife laufen.

 

Das "Server" script bricht nach ca 20 Minuten einfach ab. Ohne Fehlermeldung. 1-2 mal kann ich es neu starten, danach geht Autohotkey überhaupt nicht mehr. Im Tastmanager läuft der Prozess. Versuche ich ihn zu beenden, steht dort "Zugriff verweigert".

 

Es ist egal ob ich es compiliere oder mit Scite laufen lasse.

 

Rechner:

 

Windows 8 64 Bit ( und einen Windows 7 32 Bit Rechner ).

 

Server Script:

Spoiler

Beim Client Script ist es das gleiche. Interessant ist aber, das ein sleep von 5000 die Laufzeit des Scriptes deutlich verlängert.

 

 

Client Rechner: Windows 7 32 Bit

Spoiler

Meine Vermutung ist, das ich unsauber Programmiert habe. Ich bin für Hilfe sehr dankbar! Das Script muss 3 Tage stabil durchlaufen.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Ausser das dort einige kleinere Fehler sind (returns vergessen nach Label) finde ich keine Fehler.

Das Zugiff verweigert ist meh als merkwürdig und könnte auf Viren-Befall hindeuten aber auch einfach nur ein Bug sein.


Visit the new forum ahkscript.org.

http://ahkscript.org


Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

Ausser das dort einige kleinere Fehler sind (returns vergessen nach Label) finde ich keine Fehler.

Das Zugiff verweigert ist meh als merkwürdig und könnte auf Viren-Befall hindeuten aber auch einfach nur ein Bug sein.

 

Okay, die Returns füge ich noch hinzu.

 

- Virenbefall schließe ich aus.

Der 32 Bit Rechner ist ganz frisch installiert ohne Zusatzsoftware. Klar keine 100% Sicherheit, aber das währe schon sehr komisch. Da dieser nur im LAN hängt und einen Beamer füttert.

 

Außer Autohotkey,VLC, und Avast/Comodo ist dort nichts drauf.

 

Avast und Comodo habe ich testweise ausgeschaltet ( auch nach Reboot aus ). Aber das ändert nichts.

 

Ein anderes Script das ich geschrieben habe, läuft 24/7 ohne Probleme ( Poste ich später ).

 

Das komische ist, das ein Sleep die Zeit verlängert bist der Fehler auftritt.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Probiers dann mal mit return.


Visit the new forum ahkscript.org.

http://ahkscript.org


SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Also beim Server-Script solltest du kein return innerhalb der loop haben, was du aber im oberen Teil hast.

 

Du kannst auch bei beiden Scripts mal irgendwo #Persistent reinschreiben, das verhindert das automatische Abbrechen eines Programms (kann aber keine Denkfehler verhindern, es kann sein, dass dein Programm irgendwann nur noch leerläuft).



Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

Okay vielen dank! Ich werde das Morgen testen und das Ergebniss hier Posten!



Seidenweber
  • Moderators
  • 638 posts
  • Last active: Sep 06 2015 01:51 PM
  • Joined: 10 May 2011

Mal abgesehen vom aktuellen Problem...

 

Wenn ich das richtig sehe, willst du doch mit dem Server-Script nur ein Datei erzeugen, damit du vom anderen Rechner aus sehen kannst, ob VLC läuft.

 

Dazu könntest du den Stream aber auch mit einem Script starten, ohne ständig den Prozess abfragen zu müssen.

File := "c:\stream\stream.txt"
FileAppend,% A_Now, % File
RunWait, X:\Pfad\zum\VLC-Verzeichnis\vlc.exe ;[Parameter anfügen -> Siehe Hilfe zu Run/RunWait]
FileRecycle, % File

All questions & answers are related to AHK 1.1.19.03 x64 Unicode

 


Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

Hallo, hier die versprochene Antwort:

 

Server - der Server läuft nun 24/7 durch und bricht nicht mehr ab!

 

- Lösung:  #Persistent 

 

Danke!

 

Client - der bricht nun immer sofort ab ( 1-2 Minuten ).

 

Ich bin mir sicher das es an meinen IF´s liegt. Ich bin dort etwas durch einander gekommen und finde den Fehler nicht. Gleichzeit muss ich sagen, das ich es verändert habe! Es ist etwas anders als das Beispiel oben.

 

Evtl. habt ihr den Durchblick und könnt mir die Ohren langziehen.

Spoiler

Vielen dank.

 

 

@Seidenweber: Danke, ich werde mir das anschauen. Derzeit ist es eine "einmalige" Sache. Sollte ich in Zukunft das Projekt weiter verfolgen, ist dein Weg wohl der bessere. Ich kenne mich nur leider nicht wirklich gut damit aus :(



SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Probiers mal mit einem Timer:

Spoiler

Hab auch sonst das Script (meiner Meinung nach) übersichtlicher gemacht.



Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

Mh, dein script bricht genau nach einem Durchlauf ab. Es startet den Stream/Video und dann geht es aus. sad.png



Martel
  • Members
  • 24 posts
  • Last active: Sep 13 2015 07:57 AM
  • Joined: 02 Feb 2013

So scheint es nun zu laufen. Das Sleep nach Check1: ist wichtig. Ohne bricht es ab. Ich habe keine Ahnung warum.

Spoiler


just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011
✓  Best Answer

Guten Morgen,

 

alle mir bekannten Programmiersprachen speichern beim Aufruf einer Subroutine (AHK: GoSub) die Adresse der Anweisung, die nach Ende der Subroutine (AHK: Return) ausgeführt werden soll. Da geschachtelte Subroutinen nicht verboten sind, kann ein Stapel/Stack von Adressen entstehen. Für die Verwaltung solcher Stacks ist ein begrenzter Speicherbereich reserviert.

 

Ob nun mit Loop oder Timer, in allen Deiner Beispiele findet sich am Ende einer oder mehrerer der in der Schleife bzw. im Timer aufgerufenen Subroutinen ein GoSub, Start/Check1. Das ist einerseits überflüssig, weil sowohl eine Schleife als auch ein Timer ohnehin weiterlaufen bzw. wieder aufgerufen werden. Andererseits führt es dazu, dass die Subroutine nicht korrekt beendet wird. Statt eine Rücksprungadresse vom Stack zu lesen und zu entfernen, wird eine weitere auf den Stack gelegt. Das führt irgendwann zu einem Pufferüberlauf, bei Zwangspausen per Sleep dauert es nur länger, bis der Schaden eintritt.


Prefer ahkscript.org for the time being.


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Kurzum GoSub nicht verwenden.

@justme bist du dir sicher der Stack ist echt riesig und 1 Addresse ist nichts im Vergliech zur größe des RAMs oder lieg ich falsch ?


Visit the new forum ahkscript.org.

http://ahkscript.org


just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011

@nnnik: Wer ist sich schon sicher? Ich weiß noch nicht einmal, welche Informationen AHK wo ablegt. Aber mit diesem kleinen Skript komme ich auf einem XP-Rechner mit 1GB RAM bis 553:

#NoEnv
I := 1
Schleife:
Loop
   GoSub, Subroutine

SubRoutine:
   ToolTip, % I++
   If (I > 500)
      Sleep, 30
   GoSub, Schleife
Return

Prefer ahkscript.org for the time being.


Seidenweber
  • Moderators
  • 638 posts
  • Last active: Sep 06 2015 01:51 PM
  • Joined: 10 May 2011

yeah :)

 

493 bei mir (8 GB)

  Problemereignisname:	APPCRASH
  Anwendungsname:	AutoHotkey.exe
  Anwendungsversion:	1.1.13.0

All questions & answers are related to AHK 1.1.19.03 x64 Unicode