1 registered members (1 invisible),
735
guests, and 2
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
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
OP
Senior Expert
|
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: 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: 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
OP
Senior Expert
|
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: 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: jcl]
#448098
01/19/15 16:51
01/19/15 16:51
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
OP
Senior Expert
|
OP
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
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.) 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: jcl]
#456824
12/11/15 11:03
12/11/15 11:03
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
OP
Senior Expert
|
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:
#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:
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: 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
OP
Senior Expert
|
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: FBL]
#456856
12/13/15 10:09
12/13/15 10:09
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
OP
Senior Expert
|
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
|
|
|
|