Jenna Felton
Superstar
Guten Morgen
Die Frage ist vermuttlich mehr als nur frage zum Scripting, daher hier. Ich habe gerade meine OpenSim geschlossen (opensim-0.8.0.2.) Und zwar habe ich einen Skript ausgeführt, in dem ich diese Funktion hatte, die definitiv zum Ausführen kam:
Irgendwie hat die Funktion mir den Namen falsch angegeben und ich wollte wissen warum. Habe die also debuggen wollen und gar nicht bemerkt, dass ich hier eine Rekursion provoziert habe, d.h. die Funktion ruft sich selbst erneut auf und weil ich es übersehen habe, terminiert auch nicht.
Ich nehme an, dass genau deshalb ich die Meldung bekommen habe "Open Sim antwortet nicht" und kurz darauf wurde der Simulator geschlossen. Bei rekursiven Aufruffen wird der Stack solange mit den Aufrufparameter und anderen Sachen belegt, bis der Skriptspeicher voll ist. Zumindest in SL würde mir der Skript in dem Fall crashen. Hier hat sich aber der Simulator geschlossen.
Meine frage wäre, kann ich irgendwo einstellen, dass auch in OS der Skript beendet wird und nicht der Simulator? Ich hoffe ja es geht irgendwie, sonst könnte man sehr einfach Sims crashen.
LG und Danke,
Jenna
Die Frage ist vermuttlich mehr als nur frage zum Scripting, daher hier. Ich habe gerade meine OpenSim geschlossen (opensim-0.8.0.2.) Und zwar habe ich einen Skript ausgeführt, in dem ich diese Funktion hatte, die definitiv zum Ausführen kam:
Code:
string key2name(key agent) {
string name = llGetDisplayName(agent);
string user = llGetUsername(agent);
llOwnerSay("key2name("+key2name(agent)+": name = '"+name+"', user = '"+user+"'");
if (name == "") {
name = llKey2Name(agent);
if (name == "") name = "("+user+")";
}
else {
name = name+"("+user+")";
}
return name;
}
Irgendwie hat die Funktion mir den Namen falsch angegeben und ich wollte wissen warum. Habe die also debuggen wollen und gar nicht bemerkt, dass ich hier eine Rekursion provoziert habe, d.h. die Funktion ruft sich selbst erneut auf und weil ich es übersehen habe, terminiert auch nicht.
Ich nehme an, dass genau deshalb ich die Meldung bekommen habe "Open Sim antwortet nicht" und kurz darauf wurde der Simulator geschlossen. Bei rekursiven Aufruffen wird der Stack solange mit den Aufrufparameter und anderen Sachen belegt, bis der Skriptspeicher voll ist. Zumindest in SL würde mir der Skript in dem Fall crashen. Hier hat sich aber der Simulator geschlossen.
Meine frage wäre, kann ich irgendwo einstellen, dass auch in OS der Skript beendet wird und nicht der Simulator? Ich hoffe ja es geht irgendwie, sonst könnte man sehr einfach Sims crashen.
LG und Danke,
Jenna
Zuletzt bearbeitet: