Projekt Erstellen Loop

Alles rund um Probleme, Bugs & Fehlermeldungen
Antworten
NoNameCode
Beiträge: 4
Registriert: Fr 21. Okt 2022, 20:46
Kontaktdaten:

Projekt Erstellen Loop

Beitrag von NoNameCode »

Grüß dich,

kann ich dich mal um deine Expertiese bitten?

Leider habe ich eine Loop beim Proejekt erstellen.

Hier ein Paar Eckdaten
> Win11
> ISN 1.14
>> Sampe Projekt anlegen => Nein
>> Für alle Benutzer installiert
> Alles frisch installiert
> Als Admin selbes Problem

Mehr details im Screenshot

Gibt es irgendwelche Log in denen ich nachsehen könnte?

Lieben Gruß

NoNameCode
Dateianhänge
Screenshot 2023-02-22 053010.png
Screenshot 2023-02-22 053010.png (28.88 KiB) 1621 mal betrachtet
Benutzeravatar
ISI360
Administrator
Beiträge: 322
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: Projekt Erstellen Loop

Beitrag von ISI360 »

Hallo

Du kannst in den ISN Programmeinstellungen mal die Debug Console des ISN aktivieren. Vielleicht erfahren wir dann mehr wo es hackt.
(Programmeinstellungen -> Allgemein -> Erweitert -> Debug -> Erweiterte Debug Console beim Start anzeigen. Danach ISN Neustarten und die Console sollte erscheinen.)

Alternativ kannst du noch folgendes Probieren:
- DarkMode Skin deaktivieren
- Evtl. pfuscht ein Virenscanner drein? Den Testweise mal deaktivieren
- In den Programmeinstellungen folgende Optionen prüfen:
Allgemein -> Beim Öffnen zuvor geöffnete Tabs wiederherstellen -> Deaktivieren
Allgemein -> Beim Öffnen automatisch Hauptdatei laden -> Deaktivieren
Allgemein -> Auch im Projektmodus die Verknüpfung zu ... -> Deaktivieren

Grüße, Christian
NoNameCode
Beiträge: 4
Registriert: Fr 21. Okt 2022, 20:46
Kontaktdaten:

Re: Projekt Erstellen Loop

Beitrag von NoNameCode »

Hey Christian,

vielen Dank für deine schnelle Antwort!

Nach einigen test konnte ich feststellen das es, wie du mitunter vermutet hast, am DarkMode liegt.
Folgende Eckpunkte:
> DarkMode + Win Sicherheit aus = Funktioniert nicht
> Win XP Skin => Funktioniert
> GUIRelax => Selbes Problem

Aus offensichtlichen gründen, habe ich mich mal durch den ISN Sourcecode gewühlt...

Debug Änderungen, um das Problem etwas einzugrenzen:

"ISN_Studio_Addons.au3" => _Load_Project

Code: Alles auswählen

....
_Write_ISN_Debug_Console("_Load_Project > Checkpoint 4", 1)

	_ISN_Set_Variable_in_Plugin($ISN_Helper_Threads[$ISN_Helper_Scripttree][$ISN_Helper_Handle], "$ISN_AutoIt_Studio_ISN_file_Path", $Pfad_zur_Project_ISN) ;Update $ISN_AutoIt_Studio_ISN_file_Path in scripttree thread
	_Write_ISN_Debug_Console("_Load_Project > Checkpoint 4.2", 1)
	_ISN_Set_Variable_in_Plugin($ISN_Helper_Threads[$ISN_Helper_Scripttree][$ISN_Helper_Handle], "$ISN_AutoIt_Studio_opened_project_Path", $Offenes_Projekt) ;Update $ISN_AutoIt_Studio_opened_project_Path in scripttree thread
	_Write_ISN_Debug_Console("_Load_Project > Checkpoint 4.3", 1)
	_ISN_Set_Variable_in_Plugin($ISN_Helper_Threads[$ISN_Helper_Scripttree][$ISN_Helper_Handle], "$ISN_AutoIt_Studio_opened_project_Name", $Offenes_Projekt_name) ;Update $ISN_AutoIt_Studio_opened_project_Name in scripttree thread
	_Write_ISN_Debug_Console("_Load_Project > Checkpoint 4.4", 1)
	_ISN_Set_Variable_in_Plugin($ISN_Helper_Threads[$ISN_Helper_Scripttree][$ISN_Helper_Handle], "$Studiomodus", $Studiomodus) ;Update $Studiomodus in scripttree thread

	_Write_ISN_Debug_Console("_Load_Project > Checkpoint 5", 1)
...

"ISN_Addon_Pluginsystem" => _ISN_Set_Variable_in_Plugin

Code: Alles auswählen

Func _ISN_Set_Variable_in_Plugin($hGUI = "", $Varname = "", $Value = "")
	If $hGUI = "" Then Return ""
	If $Varname = "" Then Return ""
	If $Value = "" Then Return ""
	If IsArray($Value) Then
		;Array
		$array_string = _ArrayToString($Value, ":rowdelim:", Default, Default, ":coldelim:")
		_Write_ISN_Debug_Console("_ISN_Set_Variable_in_Plugin > Checkpoint 1 - a", 1)
		_ISN_Send_Message_to_Plugin($hGUI, "isn_set_var_in_plugin" & $Plugin_System_Delimiter & $Varname & $Plugin_System_Delimiter & $array_string)
	Else
		;Variable
		_Write_ISN_Debug_Console("_ISN_Set_Variable_in_Plugin > Checkpoint 1 - b", 1)
		_ISN_Send_Message_to_Plugin($hGUI, "isn_set_var_in_plugin" & $Plugin_System_Delimiter & $Varname & $Plugin_System_Delimiter & $Value)
	EndIf
	_Write_ISN_Debug_Console("_ISN_Set_Variable_in_Plugin > Checkpoint 2", 1)
	Local $result = _ISN_Wait_for_Message_from_Plugin($hGUI, "isn_set_var_in_plugin", 5000, $Varname)
	_Write_ISN_Debug_Console("_ISN_Set_Variable_in_Plugin > Checkpoint 3", 1)
	If @error Or $result = "" Then
		Return -1
		SetError(-1)
	EndIf
	Return _Pluginstring_get_element($result, 3)
EndFunc   ;==>_ISN_Set_Variable_in_Plugin
"ISN_Addon_Pluginsystem" => _ISN_Wait_for_Message_from_Plugin

Code: Alles auswählen

Func _ISN_Wait_for_Message_from_Plugin($Plugin_Window = "", $Message = "", $Timeout = 1500, $Message_Text = "")
	If $Plugin_Window = "" Then Return
	If $Message = "" Then Return
	If $Timeout = "" Then Return
	While 1
		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Timout left="&$Timeout, 1)
		If $ISN_Studio_Plugin_Last_Received_Message <> "" Then
			_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > MSG Received > Check 1", 1)
			If _Pluginstring_get_element($ISN_Studio_Plugin_Last_Received_Message, 0) = $Plugin_Window And StringLower(_Pluginstring_get_element($ISN_Studio_Plugin_Last_Received_Message, 1)) = StringLower($Message) Then
				_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > MSG Received > Check 2", 1)
				If $Message_Text <> "" Then
					_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > MSG Received > Check 2.1", 1)
					If StringLower(_Pluginstring_get_element($ISN_Studio_Plugin_Last_Received_Message, 2)) = StringLower($Message_Text) Then ExitLoop
				Else
					_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > MSG Received > Check 2.2", 1)
					ExitLoop
				EndIf
			EndIf
		EndIf
;~ 		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Ping 1", 1)
		$Timeout = $Timeout - 100
;~ 		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Ping 2", 1)
		If Not WinExists($Plugin_Window) Then $Timeout = -1 ;Plugin ist abgestürzt?!
;~ 		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Ping 3", 1)
		If $Timeout < 0 Then
			_Write_ISN_Debug_Console("Wait for message action timeout! " & $Plugin_Window & " (" & $Message & ")" & $Message_Text, 3, 1, 0, 0, $ISN_Debug_Console_Category_Plugin)
			ExitLoop
		EndIf
;~ 		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Ping 4", 1)
		Sleep(100)
	WEnd

	If $Timeout < 0 Then
		_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Exit with error", 1)
		Return -1
		SetError(-1)
	EndIf
	_Write_ISN_Debug_Console("_ISN_Wait_for_Message_from_Plugin > Exit", 1)
	Return $ISN_Studio_Plugin_Last_Received_Message
EndFunc   ;==>_ISN_Wait_for_Message_from_Plugin
Der Debugcode sieht dann so aus wie im Screenshot.

Zu erkennen ist hier, dass nach * der Ladeprozess nicht fortgeführt wird
* _ISN_Set_Variable_in_Plugin($ISN_Helper_Threads[$ISN_Helper_Scripttree][$ISN_Helper_Handle], "$Studiomodus", $Studiomodus) ;Update $Studiomodus in scripttree thread

Wenn ich diesen Step auskommentiere, dann stockt es bei _Lade_Zuletzt_Verwendete_Dateien_aus_projectISN.
(Ich vermute mal der Call ist also entsprechend wichtig)

Und innerhalb von * wird _ISN_Wait_for_Message_from_Plugin niemals beendet.
Meine Vermutung ist, dass eine Adlib funktion sich aufhängt/endlos wird.
Eine der Autoit Prozesse läuft in diesem Stadium auf 20% CPU auslastung.

Meine Vermutung: die Funktion die "$ISN_Studio_Plugin_Last_Received_Message" updatet

Leider kenne ich mich zu wenig mit dem ISN Code aus und hab es jetzt nach ein paar stunden suchen aufgegeben, diese zu finden.

Hast du sonst eine Idee woran es liegen könnte?

Lieben Gruß

NoNameCode
NoNameCode
Beiträge: 4
Registriert: Fr 21. Okt 2022, 20:46
Kontaktdaten:

Re: Projekt Erstellen Loop

Beitrag von NoNameCode »

Da hats mir wohl den Screenshot rausgehauen o.O
Dateianhänge
Screenshot.png
Screenshot.png (189.41 KiB) 1605 mal betrachtet
Benutzeravatar
ISI360
Administrator
Beiträge: 322
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: Projekt Erstellen Loop

Beitrag von ISI360 »

Danke für die ausführlichen Infos.

Ich vermute folgendes: Das ISN startet beim Start einen zweiten Thread (weiter autoit3.exe) in dem der gesamte Skriptbaum-Teil des ISN abgehandelt wird.
Dieser Thread fungiert als Plugin und beim Laden des Projektes werden dem Thread gewisse Pfade und Werte mitgeteilt. Komisch ist, die von dir genannte CPU auslasstung des Prozesses (Threads), also was auch immer der da gerade macht dürfte die normalen abläufe stören. Ich verstehe zwar auch noch nicht was das ganze mit den Skins aufsich hat, aber ich werde das ganze mal versuchen nachzustellen. (Sobald ich eine Win11 Kiste bei mir habe)

Aber checke bitte mal folgendes:
Ich gehe mal davon aus dass du die Source Version des ISN verwendest. Möglicherweise startet das ISN selbst in einer anderen AutoIt Version bzw. Bitarchitektur als der Thread. Der Thread wird immer mit einer 32-bit Version von Autoit.exe ausgeführt, welche sich im \Data Verzeichnis des ISN befindet. Falls bei dir nun das ISN mit der 64-Bit exe von Autoit gestart wird, und der Thread in 32-Bit führt dies auch unweigerlich zu Problemen.

Du könntest dir Testweise mal das Compiled Packet von meiner Webseite laden und dort das ISN mit der AutoIt_Studio.exe starten. Diese .exe dient nur als "launcher" für die .a3x Datei und die integrierte 32-Bit Version von Autoit. Hiermit sollte zumindest das 64/32 Bit Thema mal ausgeschlossen sein.

Alternativ empfehle ich dir das Skin mal komplett zu deaktivieren.
Bitte um Info, falls es was neues gibt.

Grüße, Christian
Benutzeravatar
ISI360
Administrator
Beiträge: 322
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: Projekt Erstellen Loop

Beitrag von ISI360 »

Kurze Ergänzung:
Hab mir mal schnell eine Win11 VM "besorgt" und kann den von dir genannten Fehler zum Teil bestätigen. (Sofern dark mode aktiv ist)
Hat also doch nichts mit der 64/32 Bit Thematik zu tun. Zumindest in meiner VM wird das Projekt schon geladen, es dauert nur etwas länger.
Ich prüfe das mal.
Einstweil würde ich das Skin einfach deaktiviert lassen. Dann funktioniert, zumindest in meiner Win11 VM, das ISN normal.

Edit:
Echt komisch. Habe nun Windows 11 in der aktuellsten Version mal komplett neu auf einer Maschine installiert und hier besteht das Problem nicht mehr :?:
Antworten