Gamestudio Links
Zorro Links
Newest Posts
Trading Journey
by howardR. 04/28/24 09:55
basik85278
by basik85278. 04/28/24 08:56
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Help with plotting multiple ZigZag
by M_D. 04/26/24 20:03
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
M1 Oversampling
by jcl. 04/26/24 11:12
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
0 registered members (), 730 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
wandaluciaia, Mega_Rod, EternallyCurious, howardR, 11honza11
19049 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
STR Fehlermeldung und acklog Frage #447914
01/12/15 16:04
01/12/15 16:04
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Sehr geehrter Herr Lotter,
zwei Fragen:
(1) Gestern trat beim Beenden meines Spiels, ohne dass ich so wirklich etwas über längere Zeit an meinem Skript änderte (stattdessen beim Leveldesignen und Testspielen) folgende Fehlermeldung auf:

Quote:
Free input,funcs,panels,defs,syns,views,strings
Malfunction W1516: Invalid memory area STR
Program aborted,vars..ok


Handelt es sich dabei um fehlerhafte str_... Operationen oder kann der String-Speicher bspw. nicht korrekt freigegeben werden, weil der Speicherbereich anderswo überschrieben worden ist (bspw. durch Überschreiten eines Arrays)?
Ist es möglich, dass eine defekte Datei beim Laden eines Levels in besagten Speicher hineinspuckt und diese Fehlermeldung verursacht?

(2) Zudem tauchten in dieser acklog-Datei, welche in etwa 8 Levelladevorgänge aufweist, zum ersten Mal drei mir vorher unbekannte "Statusberichte" auf der folgenden Form:

Quote:
LevelInit at 143.646
604 entities 0 cameras 0 lights 0 sounds 3 paths
1 lmaps 2 textures 53 meshes 53 submeshes 636 faces...ok
LevelReady at 143.968
Status at time 283.632 frame 33364 ---------
init_gamepad dg_rundes1_mdl_3866:drehform_neigung [...]
main
Maximum Time: MINE2.MDL:mine_proxy => 1.861572


Was hat das zu bedeuten und wie wird dieser Statusreport ausgelöst? Kann das u.U. sogar vorige STR Fehlermeldung auslösen (welche zuvor auch nie aufgetreten war)?


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: STR Fehlermeldung und acklog Frage [Re: Superku] #448067
01/19/15 01:32
01/19/15 01:32
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Zu (1): Die Fehlermeldung trat nun auch ohne Statusreport und nicht beim Beenden sondern nach einem Ladevorgang auf:

Quote:
LevelInit at 226.449
397 entities 0 cameras 0 lights 0 sounds 0 paths
1 lmaps 2 textures 111 meshes 111 submeshes 1332 faces...ok
LevelReady at 226.760
Malfunction W1516: Invalid memory area STR
Program aborted


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: STR Fehlermeldung und acklog Frage [Re: Superku] #448084
01/19/15 13:09
01/19/15 13:09
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Ja, die Meldung weist tatsächlich darauf hin, dass der Speicherbereich eines STRING von irgendeinem Skript überschrieben wurde. String-Operationen wie str_cat können das nicht sein, denn die passen den Bereich an. - Die Statusberichte sind mir auch unbekannt - könnten das eine Testroutine von Ihnen sein?

Re: STR Fehlermeldung und acklog Frage [Re: jcl] #448098
01/19/15 16:51
01/19/15 16:51
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Originally Posted By: jcl
Ja, die Meldung weist tatsächlich darauf hin, dass der Speicherbereich eines STRING von irgendeinem Skript überschrieben wurde.

Ok, danke. Kann das auch durch fehlerhafte Dateien beim Laden verursacht werden, da ich sonst nicht so recht weiß, wo ich nach der Fehlerquelle suchen soll? (Ich benutze übrigens gelegentlich das string1/2 Feature im WED für read-only Zwecke.)

Originally Posted By: jcl
Die Statusberichte sind mir auch unbekannt - könnten das eine Testroutine von Ihnen sein?

Das dachte ich auch zuerst, und zur Sicherheit habe ich gerade noch einmal per SED Supersuchfunktion meine gesamten Skripte nach "Status", "Maximum" und sonstiges durchsucht, aber nichts dergleichen finden können.
Ich kann das komplette acklog mit den Statusberichten an den Support schicken, falls das behilflich sein kann.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: STR Fehlermeldung und acklog Frage [Re: Superku] #448257
01/26/15 13:20
01/26/15 13:20
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Kann die Meldung vielleicht von irgendeinem Plugin oder einer externen Bibliothek kommen?

Re: STR Fehlermeldung und acklog Frage [Re: jcl] #456824
12/11/15 11:03
12/11/15 11:03
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Diese Statusnachricht tauchte eben wieder mitten in einem acklog auf, sehr merkwürdig!
Komplettes Projektverzeichnis per SED danach durchsucht, in meinem Header benutze ich nur folgendes an externen Bibliotheken:

Code:
#include <acknex.h>
#include <default.c>
#include <particles.c>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <default.c>
#include <strio.c>
#include <d3d9.h>
#include <acknet.h>




Davon unabhängig habe ich derzeit ein Problem mit meinem Code, und zwar dass eine bestimmte Entity Aktion mit regulärer while loop gelegentlich (!) nicht durch level_load() beendet wird, als sei PROC_GLOBAL gesetzt oder der me pointer verändert worden/ auf NULL gesetzt (zumindest glaube ich, dass das das entsprechende Verhalten ist).
Die Struktur ist so ziemlich die folgende:

Code:
var enemyFreeze = 0;
#define EFWAIT while(enemyFreeze) wait(1)

action robot()
{
	//proc_mode = PROC_GLOBAL;
	my.skill1 = 64;
	while(my.skill1 > 0)
	{
		EFWAIT;
		sys_marker("ME1");
		diag_var("\n enemy death loop at frame %.0f",total_frames);
		diag_var(" with pointer %.5f",me); // just to differentiate different enemies
		my.pan += 5*time_step;
		sys_marker(NULL);
		my.skill1 -= time_step;
		wait(1);
	}
	ptr_remove(me);
}

void main()
{
	fps_max = 60;
	level_load(NULL);
	ent_create(CUBE_MDL,vector(100,0,0),robot);
	while(!key_space) wait(1);
	enemyFreeze = 1;
	wait(1);
	diag_var("\n ##### loading new level at frame %.0f",total_frames);
	level_load(NULL);
	enemyFreeze = 0;
}


Mir ist klar, dass diese Code Struktur nicht allzu gut ist mit der internen define Loop, aber bis zur Vollendung dieses jahrealten Projektes wollte ich sie beibehalten.
So oder so sollte es aber eigentlich keinen Absturz durch Zugriff auf den my pointer in der robot loop geben. Der Pointer wird zwar durch level_load korrekt auf 0 gesetzt wird, aber da die Aktion selbst nicht beendet wird, kommt es unweigerlich zum Crash.
Das vorherige Code Beispiel stürzt nicht ab, der entsprechende Code in meinem Projekt aber sehr wohl, wenn auch nur gelegentlich. acklog spuckt dann folgendes aus:
Quote:
enemy death loop at frame 6514 with pointer 303994.56250
enemy death loop at frame 6515 with pointer 303994.56250
##### loading new level map39.wmb at frame 6634
LevelInit at 130.194
20 entities 0 cameras 0 lights 0 sounds 0 paths
1 lmaps 2 textures 3 meshes 3 submeshes 36 faces...ok
LevelReady at 130.264
enemy death loop at frame 6639 with pointer 0.00000
Error E1513: Script crash in enemy_mobile2: ME1
Normal exit at 134.342


Was könnte dieses Verhalten in meinem Projekt verursachen (welches übrigens nur bei dynamisch erstellten Entitys aufzutreten scheint)? Ich rufe in der robot-Aktion keine Subroutine auf, welche direkt PROC_GLOBAL setzt. Stattdessen scheint es eine andere externe Ursache haben zu müssen, aber ich weiß nicht wirklich, wo ich suchen kann oder muss.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
[solved] STR Fehlermeldung und acklog Frage [Re: Superku] #456832
12/11/15 16:30
12/11/15 16:30
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Ich habe die Fehlerursache ausfindig machen können:
In der Loop für die Todesanimation dieser besonderen Gegner, welche nach Abschuss in die Tiefe fallen, habe ich diese unachtsam weit außerhalb der Levelgrenzen fallen lassen. Offenbar verträgt das entweder der ABT, level_load() oder aber wahrscheinlicher eine Kombination aller 3 Dinge (inklusive meines schlechten Codes) nicht und die Entity/ alle außerhalb der Levelgrenzen werden nicht entfernt.

Last edited by Superku; 12/11/15 16:34.

"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: [solved] STR Fehlermeldung und acklog Frage [Re: Superku] #456841
12/12/15 09:17
12/12/15 09:17
Joined: Sep 2003
Posts: 9,859
F
FBL Offline
Senior Expert
FBL  Offline
Senior Expert
F

Joined: Sep 2003
Posts: 9,859
Alternativ hättest du auch noch probieren können, das EFWAIT ans Ende der Schleife zu schieben. Falls das nicht hilft (oder die Logik plättet), dann danach den my-Pointer nochmal explizit überprüfen und ggf. Exitus.
Und wenn das nicht hilft, vor dem Rücksetzen von enemy_freeze ein wait(1) rein. Dann muss die Entity Funktion auf jeden Fall nochmal durch ein wait() durch direkt nach dem Levelwechsel, und muss eigentlich beendet werden. Anders könnte rein theoretisch ja noch der Rest der Funktion ausgeführt werden, und dann knallts natürlich (auch wenn ich eigentlich erwarten würde, dass die Entity Funktionen vor Start des Levels abgebrochen werden).

Re: [solved] STR Fehlermeldung und acklog Frage [Re: FBL] #456856
12/13/15 10:09
12/13/15 10:09
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline OP
Senior Expert
Superku  Offline OP
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Ja natürlich, ich hätte viele kleine Dinge implementieren oder ändern können, um den Crash zu verhindern.
Das wollte ich ja aber auf keinen Fall, stattdessen wollte ich, dass es auch weiterhin crasht und ich so die Fehlerursache ausfindig machen kann, nämlich warum die Aktion nicht beendet wird. Es liegt und lag ja nicht an der Code Struktur (gemäß des Beispiels) selbst, sondern daran, dass die Entity beim level_load sich nicht mehr in den Level Dimensionen befand.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: [solved] STR Fehlermeldung und acklog Frage [Re: Superku] #456857
12/13/15 14:20
12/13/15 14:20
Joined: Sep 2003
Posts: 9,859
F
FBL Offline
Senior Expert
FBL  Offline
Senior Expert
F

Joined: Sep 2003
Posts: 9,859
Wenn dem wirklich so sein sollte, dann klingt das aber schon sehr nach Engine Bug. Gewollt kann das eigentlich nicht sein.

Ansonsten ist es ja oft so, dass man bei den fiesen Bugs irgendwo ne Zahl oder irgendwas am Code ändert, und plötzlich ist das Problem weg, bei der nächsten Änderung taucht es wieder auf.

Page 1 of 2 1 2

Moderated by  old_bill, Tobias 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1