Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002282Eressea[Alle Projekte] Generalöffentlich2017-03-02 08:11
ReporterEnnoBearbeitung durchEnno 
PrioritätdringendAuswirkungBlockerReproduzierbarimmer
Status geschlossenLösungerledigt 
Produktversion3.10.5 
ZielversionBehoben in Version3.10.6 
Zusammenfassung0002282: Datenfile 1012 kann nicht geladen werden
Beschreibung

0000002 0x00007ffff6961311 in *__GI___assert_fail (
assertion=0x5129cf "i < 4096 && i>0", file=<optimized out>, line=41,
function=0x512a0b "a_readkeys") at assert.c:81
#3 0x00000000004b8e4a in a_readkeys (a=0x4375230, owner=0x4374de0,
data=0x7fffffffdc90) at /home/eressea/eressea/git/src/attributes/key.c:41
0000004 0x00000000004ec8c4 in a_read_i (data=0x7fffffffdc90, attribs=0x4374e40,
owner=0x4374de0, key=5994588)
at /home/eressea/eressea/git/src/util/attrib.c:430
#5 0x00000000004ec9a9 in a_read (data=0x7fffffffdc90, attribs=0x4374e40,
owner=0x4374de0) at /home/eressea/eressea/git/src/util/attrib.c:460
#6 0x00000000004eb981 in read_attribs (data=0x7fffffffdc90, alist=0x4374e40,
owner=0x4374de0) at /home/eressea/eressea/git/src/util/attrib.c:39
#7 0x00000000004d7b7f in readregion (data=0x7fffffffdc90, x=-118, y=52)
at /home/eressea/eressea/git/src/kernel/save.c:1041
0000008 0x00000000004d7bf6 in read_region (data=0x7fffffffdc90)
at /home/eressea/eressea/git/src/kernel/save.c:1052
#9 0x00000000004da5d8 in read_game (data=0x7fffffffdc90)
at /home/eressea/eressea/git/src/kernel/save.c:1688
#10 0x00000000004d9aa6 in readgame (filename=0x1d78f28 "1012.dat")
at /home/eressea/eressea/git/src/kernel/save.c:1501

Schritte zur Reproduktion

(gdb) r -t 1012 ../server/scripts/map.lua
Starting program: /home/eressea/eressea/game-2/eressea -t 1012 ../server/scripts/map.lua
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
eressea: /home/eressea/eressea/git/src/attributes/key.c:41: a_readkeys: Assertion `i < 4096 && i>0' failed.

Partei0
SpielE2
Report1012

Notizen / Dateien

Enno

Enno

2017-02-12 19:52

Administrator   ~0006961

Ich hab's. Was hier passiert: In der Region ist ein Weihnachtsbaum aktiv, hat also mal region:set_key("xm06") bekommen. Jetzt ist Frühling, und wir machen region:set_key("xm06", false).

Dadurch fällt die Anzahl der keys im at_keys der Region auf 0. Der Lese-Code sagt aber:

assert(i &lt; 4096 && i>0);

Also, es sollten immer zwischen 1 und 4096 keys sein. Da das at_keys aber nicht gelöscht wird, wenn es nicht mehr gebraucht wird (TODO: das sollte es), kann es auch mal eines mit 0 keys an einer Region geben.

Lösung: Die Leseroutine weniger pampig machen.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2017-02-12 19:04 Enno Neuer Eintrag
2017-02-12 19:04 Enno Status neu => zugewiesen
2017-02-12 19:04 Enno Bearbeitung durch => Enno
2017-02-12 19:52 Enno Notiz hinzugefügt: 0006961
2017-02-13 15:13 Enno Status zugewiesen => erledigt
2017-02-13 15:13 Enno Lösung offen => erledigt
2017-02-13 15:13 Enno Behoben in Version => 3.10.6
2017-03-02 08:11 Enno Status erledigt => geschlossen