• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

unclosed upvalue in function @stdlib.lua:88 ???

PuhWutze

Geonewbie
Hi Leute - ich brauche mal eure Hilfe. Die Cartridge zu https://coord.info/GC6MKPC lief schon bei einigen fehlerfrei (auch bei mir). Ebenso die Vorgängerversion, die nur unwesentlich verändert war. Jetzt meldet sich aber ein Cacher, bei dem die Cartridge mehrfach abgestürzt ist. In den Logfiles erkenne ich als Grund dafür folgende Fehlermeldung:
:: STOR: unclosed upvalue in function @stdlib.lua:88
Kann da jemand was mit anfangen? Oder wie/wo kann ich mit der Fehlersuche weitermachen? Ich habe keinen Ansatzpunkt, leider
 

dennistreysa

Geocacher
Das sind ein bisschen wenig Informationen, um auf Fehlersuche zu gehen.
An welcher Stelle stürzt es denn ab? Ist es immer die gleiche Stelle, bzw. lässt sich der Fehler gezielt herbeiführen. Welches Gerät, welche Betriebssystem-Version? Welcher Player in welcher Version?
Bist du dir sicher, dass in den Logs die Stelle steht, an denen die Cartridge abstürzt? Was genau hast du denn geändert, bzw. stürzte die Cartridge mit der alten Version nicht ab?....
 
OP
P

PuhWutze

Geonewbie
Irgendwie war das in Vergessenheit geraten :O Aber jetzt meldet sich der nächste, bei dem es auch nicht klappt. Ist wohl eher eine Ausnahmeerscheinung. Der Spieler jetzt ist mit dem Smartphone und Whereyougo unterwegs. Von allen anderen hatte ich bisher kein entsprechendes Feedback erhalten (bei mittlerweile 140 Founds bei dieser Version der Cartridge und noch 116 beim Vorgänger, da ein Fehler). Wenn die Meldung ":: STOR: unclosed upvalue in function @stdlib.lua:88" einmal gekommen ist, dann kommt sie beim Neustart immer wieder und später auch diese Meldung: ":: java.lang.RuntimeException: Tried to call nil". Hat jemand eine Idee, was das bedeutet? Vielen Dank!!!

hier die vermutlich relevanten Logzeilen:
16:36:24 509.406 69.926 100.0 11.0 :: STOR: storing game
16:36:26 509.406 69.926 100.0 8.0 :: STOR: unclosed upvalue in function @stdlib.lua:88
16:50:40 509.385 69.886 93.0 3.0 :: STOR: storing game
16:50:42 509.385 69.885 93.0 3.0 :: STOR: unclosed upvalue in function @stdlib.lua:88
16:53:03 50.938 69.857 89.0 3.0 :: ZONE: proximity z_Koelnarena
16:53:48 509.379 69.849 94.0 3.0 :: ZONE: inside z_Koelnarena
16:53:49 509.379 69.849 94.0 3.0 :: EVNT: z_Koelnarena.OnEnter
16:53:49 509.379 69.849 94.0 3.0 :: java.lang.RuntimeException: Tried to call nil

stack trace: at @E:/webtempfiles/f4846506-fff6-45b1-b89d-fe7fcc637283/_cartridge-new.enc:11
at @E:/webtempfiles/f4846506-fff6-45b1-b89d-fe7fcc637283/_cartridge-new.enc:1965
 
OP
P

PuhWutze

Geonewbie
Zeile 11 - ab der ersten Zeile, damit der Zusammenhang klar wird:
require "Wherigo"
ZonePoint = Wherigo.ZonePoint
Distance = Wherigo.Distance
Player = Wherigo.Player

-- String decode --
function _2suQ(str)
local res = ""
local dtable = "\082\069\083\044\072\019\121\113\122\114\095\027\045\067\056\048\003\026\010\049\074\011\117\111\058\007\106\005\088\022\034\020\023\109\126\061\024\081\070\085\051\093\124\104\087\029\068\032\107\089\060\108\053\075\054\086\078\030\000\028\092\012\096\016\009\014\036\055\043\097\098\046\115\042\123\008\094\112\038\116\099\015\018\037\091\076\066\110\001\101\084\057\077\071\079\102\040\004\118\080\047\017\065\035\039\033\006\031\002\103\090\064\073\063\025\105\120\100\059\050\125\021\119\013\052\041\062"
for i=1, #str do
local b = str:byte(i)
if b > 0 and b <= 0x7F then
res = res .. string.char(dtable:byte(b))
else
res = res .. string.char(b)
end
end
return res
end
 
OP
P

PuhWutze

Geonewbie
Zeile 1964ff:
function _Mci1x:OnEnter()
_nekE = _2suQ("\011\093\081\116\020\117")
Wherigo.PlayAudio(_eRd)
_Urwigo.MessageBox{
Text = _2suQ("\005\090\010\009\052\116\081\044\090\088\048\094\052\023\090\081\049\123\023\088\073\081\044\106\048\047\023\048\044\070\073\080\048\118\070\073\048\095\118\007\073\073\090\023\034\048\110\090\096\023\088\118\090\088\106\051\087\001\127\051\087\001\127\047\070\073\048\095\118\007\073\073\090\023\034\048\116\088\048\054\024\090\052\088\048\116\073\080\048\090\116\088\048\003\081\116\090\088\081\090\048\014\090\088\080\090\010\004\048\118\070\073\048\070\052\073\048\226\128\158\002\010\052\090\071\088\116\073\044\070\023\073\048\118\090\073\048\045\116\073\073\090\088\073\226\128\156\048\049\024\088\009\116\078\116\090\010\080\048\116\073\080\048\023\088\118\048\070\034\048\041\072\048\103\078\010\116\052\048\120\016\016\092\048\116\034\048\054\024\090\052\088\090\010\048\003\080\070\118\080\080\090\116\052\048\054\070\052\049\048\023\088\123\090\116\080\048\118\090\073\048\087\023\090\010\110\090\010\078\070\010\049\073\048\090\010\024\090\096\096\088\090\080\048\123\023\010\118\090\072\051\087\001\127\051\087\001\127\047\070\073\048\095\118\007\073\073\090\023\034\048\054\024\090\052\088\048\099\090\010\073\080\090\044\080\048\073\116\081\044\048\070\052\073\048\095\010\080\048\118\090\010\048\045\116\073\073\090\088\073\049\024\034\034\023\088\116\049\070\080\116\024\088\048\023\088\118\048\110\010\090\116\096\080\048\118\116\090\048\093\090\080\070\078\044\090\010\048\118\090\010\048\095\118\007\073\073\090\090\048\070\052\073\048\090\116\088\090\010\048\001\090\116\073\090\048\070\023\096\072\048\047\116\090\048\002\088\080\123\116\081\049\052\023\088\110\048\118\090\073\048\093\090\088\073\081\044\090\088\048\123\116\010\118\048\070\052\073\048\090\116\088\090\048\001\090\116\073\090\048\034\116\080\048\024\096\096\090\088\090\034\048\103\023\073\110\070\088\110\048\110\090\073\090\044\090\088\004\048\045\116\073\073\090\088\073\081\044\070\096\080\048\070\052\073\048\039\024\010\080\073\081\044\010\116\080\080\048\023\088\118\048\070\052\073\048\100\010\024\071\052\090\034\072\048\094\052\090\116\081\044\009\090\116\080\116\110\048\116\073\080\048\118\116\090\048\005\090\010\070\023\073\096\024\010\118\090\010\023\088\110\048\118\090\010\048\111\023\049\023\088\096\080\073\110\090\073\080\070\052\080\023\088\110\048\094\090\110\090\088\073\080\070\088\118\048\118\090\010\048\091\044\090\034\090\088\048\118\090\073\048\095\118\007\073\073\090\023\034\073\072"),
Media = _YhzRD,
Callback = function(action)
if action ~= nil then
_5DoQ:MoveTo(Player)
_YDWHe()
end
end
}
end
 

Charlenni

Geomaster
Entschuldigung für die späte Antwort.

Ich würde sagen, dass bei Abspeichern etwas schief geht (STOR: unclosed upvalue in function @stdlib.lua:88). Alles andere sind Folgefehler. Nachschauen bezüglich des Fehlers beim Abspeichern kannst du im Quellcode von OpenWIG (https://github.com/biylda/openwig/blob/master/OpenWIGLibrary/src/cz/matejcik/openwig/formats/Savegame.java, ab Zeile 45). Die genaue Stelle an der der Fehler auftritt (stdlib.lua:88) findest du bei https://github.com/matejcik/kahlua2/blob/f0d67ba1560cf3dfd5c933f06d8e72eb2d03d020/core/resources/stdlib.lua in Zeile 88. Es scheint sich um die Funktion string.rep() zu handeln. Verwendest du die? Einfach mal in deiner Lua-Datei suchen.

Der eigentliche Fehler tritt dann auf, wenn die Funktion zum Decodieren verschlüsselter Zeichenketten (hier _2suQ) mit einer leeren Zeichenkette (genauer nil) aufgerufen wird (Zeile 1965). Dort wird nun versucht auf eine Stelle in der Zeichenkette zuzugreifen (str:byte(i)). Da str nil ist, kann die Funktion byte() nicht aufgerufen werden. Daher die Fehlermeldung. Aber eigentlich sollte die Zeichenkette nicht leer sein.

Eventuell bricht er beim Abspeichern in der Mitte ab. Oder es wird gerade eine Funktion ausgeführt/Zone betreten, die das Abspeichern stört. Lass dir mal die defekte Sicherungsdatei zuschicken und vergleiche sie mit einer, die funktioniert. Gibt es Unterschiede in der Größe oder dem Inhalt? Ich tippe mal darauf, dass die nicht funktionierende kleiner ist.
 
OP
P

PuhWutze

Geonewbie
Hallo Charlenni, vielen Dank für deinen Input! Puh, jetzt bin ich aber gleich schon völlig überfordert :O

Also, was ich in der lua gefunden habe, ist diese Funktion hier:
-- String decode --
function _uRi(str)
local res = ""
local dtable = "\029\100\085\022\016\090\050\126\101\051\072\097\074\024\114\032\112\017\108\002\037\089\106\004\078\005\010\065\093\091\028\063\020\007\027\054\103\066\115\102\060\113\086\084\047\031\099\125\057\059\044\055\082\015\048\012\009\013\003\049\011\040\033\094\039\019\006\046\121\109\069\118\083\070\107\071\117\030\096\064\025\073\098\052\035\045\056\116\104\026\111\075\088\122\001\023\058\095\062\067\123\053\061\034\092\077\120\014\041\119\008\076\124\043\000\081\042\079\068\018\021\105\036\087\110\038\080"
for i=1, #str do
local b = str:byte(i)
if b > 0 and b <= 0x7F then
res = res .. string.char(dtable:byte(b))
else
res = res .. string.char(b)
end
end
return res
end

Sonst finde ich überhaupt nichts mit "string." Was mir schon aufgefallen ist: Das Programm speichert sehr oft. Eigentlich sollte es das nur, wenn eine neue Zone entdeckt wurde und wenn der Spiele eine Zone betritt oder verlässt. Vielleicht kommt es ja nicht mehr zu dem Fehler, wenn ich die Zahl der Speicherungen minimiere?
 

Charlenni

Geomaster
Jetzt kommen wir der Sache schon näher. Wenn du Abspeicherung wenn eine Zone betreten wird, dann kann es sein, dass dir der Jitter einen Strich durch die Rechnung macht. Jitter ist, dass sich die Koordinaten ändern, obwohl der Spieler stehen bleibt. Dadurch kann es sein, dass du die Zone mehrfach kurz hinter einander betrittst. Und jedes Mal wird versucht, in die gleiche Datei zu speichern. Das kann natürlich Probleme bereiten.

Als Workaround würde ich vorschlagen, ein Flag zu setzen, ob du in dieser Zone schon gespeichert hast. Damit bist du sicher, dass in jeder Zone nur einmal gespeichert wird.
 
Oben