Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002221Eressea[Alle Projekte] Generalöffentlich2017-07-17 13:43
ReporterXolgrimBearbeitung durchEnno 
PrioritätniedrigAuswirkungkleinerer FehlerReproduzierbarnicht getestet
Status erledigtLösungerledigt 
Produktversion3.9.1 
Zielversion3.9.1Behoben in Version3.9.1 
Zusammenfassung0002221: Größenbegrenztes Gebäude (Hafen) größer als Maximalgröße
Beschreibung

Da schaue ich mir gerade so ein wenig die Heimatinsel meines Verbündeten an und stolpere über einen Hafen (max Grösse 25) der Größe 28 hat...

Das Pachtstück ist auf Tamanium in der Region "Sirkitofil, Komturei Ostküste" zu bewundern.

Hafen a2e (a2e), Größe 28, Hafen.

Wann der gebaut wurde und unter welchen umständen das passiert ist, da kann ich leider nicht weiter helfen.

Partei777
SpielE2
Report984

Eintrags-Beziehungen

verwandt mit 0001859 erledigtMrTurner Burgenbau 1 reicht für Wache Größe 7 
verwandt mit 0002337 erledigtEnno Regionen um Leuchttürme werden nicht mehr angezeigt 

Notizen / Dateien

Enno

Enno

2016-07-30 20:36

Administrator   ~0006648

Ich gucke mal. Im Code sehe ich da schon eine Grenze:

        if (btype->maxsize > 0) {
            n = btype->maxsize - built;
        }
Enno

Enno

2016-07-30 20:51

Administrator   ~0006649

Ich kann das noch nicht reproduzieren, sehe aber eine ander Unschönheit: Wenn man einen kompletten Hafen gebaut hat, und dann in der kommenden Woche "MACHE HAFEN abcd" befiehlt, bekommt man die Meldung "Hier gibt es schon einen Hafen". Die sollte es eigentlich nur für einen Hafen-Neubau geben, nicht für versuchten Weiterbau an einem existierenden?

Enno

Enno

2016-07-30 20:58

Administrator   ~0006650

Ich kann keinen Fehler finden, der dazu führt, aber kann bestätigen dass der betroffene Hafen in der Tat 28 groß ist. Das ist einer von vier Häfen, die das Problem aufweisen:

Pier 42 (dfri): 29
Hafen a2e (a2e): 28
Karanhaven (qyb2): 26
Hafen (vgh5): 26
Enno

Enno

2016-07-30 21:10

Administrator   ~0006651

Nicht nur Häfen sind von dieser Seuche betroffen:

Forgolodh (5scu) (academy size 27 of 25).
Die heilige StA☼tte der Druiden (7pf) (stonecircle size 111 of 100).
Schule fA¼r Rechnen und Schreiben (uni) (academy size 33 of 25).
Pier 42 (dfri) (harbour size 29 of 25).
Coa NA3lA«o (6sb) (academy size 26 of 25).
Hafen a2e (a2e) (harbour size 28 of 25).
Academica Artis Omnis (74bp) (academy size 26 of 25).
Tor der Helden von Eternath (kw7s) (portal size 10 of 2).
Tor der Helden von Eternath (viw8) (portal size 10 of 2).
Karanhaven (qyb2) (harbour size 26 of 25).
Akademie (8me3) (academy size 26 of 25).
Hafen (vgh5) (harbour size 26 of 25).

Enno

Enno

2016-07-30 21:24

Administrator   ~0006652

Da ich den Fehler nicht reproduzieren kann, habe ich eine Reparatur für existierende Gebäude implementiert, und einen Extra-Check nach MACHE, der anschlagen sollte, wenn ein Gebäude durch den Bau zu groß wurde. Wenn das also in Zukunft noch einmal passiert, sollte ich es merken, und kann den Fehler reparieren.

Enno

Enno

2016-07-31 10:20

Administrator   ~0006656

In E3 gibt es auch zwei Wachen, die größer als 10 Punkte sind. Vielleicht kann ich herausfinden, wann die gebaut wurden, und das über eine Zeit verfolgen? Ich habe da ja noch alle Daten seit dem Start, und die sind nicht groß.

Enno

Enno

2016-07-31 10:22

Administrator   ~0006657

Plan: binäre Suche durch alte Datenfiles machen, die Woche finden, in der diese Wachen zu groß wurden, Problem einzingeln und reparieren.

Enno

Enno

2016-07-31 11:00

Administrator   ~0006659

In E3:

THERUM TAURBARAD (w4gz) (watch size 11 of 10).
Zwillingsturm (sx6h) (watch size 12 of 10).
Wache des Westens (90v2) (watch size 13 of 10).

Enno

Enno

2016-07-31 11:05

Administrator   ~0006660

Ist in E3/190 schon kaputt gewesen. Für ältere Backups muss ich tiefer graben.

Enno

Enno

2016-07-31 11:09

Administrator   ~0006661

Zwischen E3/15 und E3/20 erscheint dieses Gebäude in den Fehlern:

Zwillingsturm (sx6h) (watch size 12 of 10).

Die beiden anderen sind schon in Runde E3/15 falsch.

Enno

Enno

2016-07-31 11:14

Administrator   ~0006662

Eingekringelt: Zwillingsturm (sx6h) erscheint von Runde 17 auf 18 in der Liste der Fehler. Der neue Code schlägt an, wenn ich Runde 18 neu auswerte:

build_building: Assertion `b->type->maxsize <= 0 || b->size <= b->type->maxsize' failed.

Der Fehler passiert also in make_cmd, mit dem Befehl "MACHE 2 Wache sx6h", gegeben von Steinträger (f8r5). Kann es an der Mengenangabe liegen?

Enno

Enno

2016-07-31 11:15

Administrator   ~0006663

Neuen Test schreiben, mit Größenangabe. Wenn es das nicht ist, die E3/17 Daten und Befehle neu auswerten und mit dem Debugger steppen, bis ich es verstehe.

Enno

Enno

2016-07-31 13:32

Administrator   ~0006664

Hmm. Test hat nicht geklappt. Zur Repro mal den genauen Fall:

Wache, Größe 10
Bauende Einheit steht in der Wache
Befehl MACHE 2 Wache sx6h

Die Wache ist ein Gebäude mir verschiedenen Ausbaustufen, wie Burgen. Das kompliziert den Code, und die Analyse, ist aber wahrscheinlich nicht relevant, weil der Fehler ja auch bei Akademie und Hafen auftritt?

Da gibt es allerdings die Zeilen:
if (type->improvement == NULL && completed == type->maxsize)
return ECOMPLETE;
Q: Wie geht build() mit einer Kette von improvements um?
Q: completed ist 10, also größer als maxsize. Das kümmert uns aber nicht?

Enno

Enno

2016-07-31 16:16

Administrator   ~0006665

Bei der Wache ist das Problem wie folgt: building.maxsize ist mit 10 angegeben, aber building->construction hat drei-Stufen, mit construction->maxsize als 5, 5, und -1 respektive.
D.h. laut aktuellem Code: die letzte Ausbaustufe (Wachturm) beginnt bei 10, kann aber beliebig groß werden, weil nur construction->maxsize geprüft wird.

Für die Regeln heisst das, Wachtürme können beliebig groß sein, und building->maxsize hat keine Auswirkung?

Der Hafen und die Akademie sind anders, die haben keine mehreren Ausbaustufen, und construction->maxsize entspricht building->maxsize. Warum die größer sein können, weiß ich immer noch nicht.

Xolgrim

Xolgrim

2016-07-31 17:05

Entwickler   ~0006666

Wir haben es so leider nicht in die Anleitung geschrieben, aber ich bin mir sehr sicher, dass Wache bei Größe 10 aufhören sollte und nicht wie eine Zitadelle endlos aussbaubar sein sollte (Wobei so ne größe 6250 Holzburg aus Rollenspiel Sicht sicherlich auch ihren Reitz haben kann).

Enno

Enno

2016-07-31 18:24

Administrator   ~0006667

Ich habe mal eine Email mit Zusammenfassung an eressea-design geschickt. Dieser Bug ist frustrierend.

Julius

Julius

2016-08-03 22:47

Reporter   ~0006668

Kann es sein, dass das passiert, wenn der Hafen z.B. Größe 24 hat und man mit viel Talent und ausreichend Material daran weiter baut? Die Einheit darf also bauen, da noch unter max. Ausbaugröße, sie baut aber nicht bis zur maximal erlaubten Größe, sondern solange ihr Talent, bzw. das Material reicht.
Ich erinnere mich dunkel, dass in E3 bei Wachen das das Problem war.

Julius

Julius

2016-08-04 21:09

Reporter   ~0006669

Kann das mit bug 1859 zusammen hängen? Den meinte ich jedenfalls mit "dunkel erinnern".

Enno

Enno

2016-08-04 21:51

Administrator   ~0006670

Das ist möglich, dann wäre das unter Umständen ja schon gefixt.

Enno

Enno

2016-08-05 21:24

Administrator   ~0006671

Ich suche jetzt mal, wo der original im Bug genannte Hafen seine Größe von 25 überschritten hat. In Runde 865 hat der schon Größe 28. Die Datenfiles von Runde 500 und vorher kann ich nicht einlesen. Alles dazwischen muss ich mal aus dem Backup hervor kratzen.

Enno

Enno

2016-08-05 22:05

Administrator   ~0006672

Runde 600 kann gelesen werden, und hat die folgenden fehlerhaften Gebäude:

Forgolodh (5scu) (academy size 27 of 25).
Die heilige Stätte der Druiden (7pf) (stonecircle size 111 of 100).
Shrine of wisdom (uni) (academy size 33 of 25).
Pier 42 (dfri) (harbour size 29 of 25).
Coa Nólëo (6sb) (academy size 26 of 25).
Hafen a2e (a2e) (harbour size 28 of 25).
Academica Artis Omnis (74bp) (academy size 26 of 25).
Tor der Helden von Eternath (kw7s) (portal size 10 of 2).
Tor der Helden von Eternath (viw8) (portal size 10 of 2).
Karanhaven (qyb2) (harbour size 26 of 25).
Akademie (8me3) (academy size 26 of 25).
Hafen (vgh5) (harbour size 26 of 25).

Damit fehlt dort:
Schule für Rechnen und Schreiben (uni) (academy size 33 of 25).

Die ist also erst in einer der Folgewochen (von denen ich Daten haben sollte) zu groß geworden. Darauf werde ich meine Suche mal konzentrieren, denke ich.

Julius

Julius

2016-08-05 22:15

Reporter   ~0006674

Nein, sorry. (uni) ist dabei, heißt nur anders. Und Größe ist auch schon 33/25.

Enno

Enno

2016-08-05 22:37

Administrator   ~0006676

Falsch geguckt. Die Akademie ist schon zu groß, aber heisst da noch anders:
Shrine of wisdom (uni) (academy size 33 of 25).

Ich muss meine Suche jetzt auf Datenfiles < 600 machen. Seufz. 571 kann ich schon nicht mehr lesen, weil das zu alt für den Code ist. Aber 572 geht, und hat die selben Fehler schon.

Das heißt, der Fehler ist in E2 vor Runde 572 passiert, in einem Datenfile, das ich nicht mehr einlesen kann. Damit kann ich das auch nicht einfach reproduzieren. Positiv zu bemerken ist, dass es seit Runde 572 auch nicht wieder passiert ist. Ich werde mich mit einer Reparatur der Gebäude und einigen asserts im Code abfinden müssen, die verhindern, dass das wieder passiert, oder mir sagen, wenn es das tut.

Enno

Enno

2016-08-06 14:49

Administrator   ~0006680

https://github.com/eressea/server/pull/531

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2016-07-26 19:38 Xolgrim Neuer Eintrag
2016-07-30 20:36 Enno Notiz hinzugefügt: 0006648
2016-07-30 20:36 Enno Bearbeitung durch => Enno
2016-07-30 20:36 Enno Status neu => zugewiesen
2016-07-30 20:51 Enno Notiz hinzugefügt: 0006649
2016-07-30 20:58 Enno Notiz hinzugefügt: 0006650
2016-07-30 21:10 Enno Notiz hinzugefügt: 0006651
2016-07-30 21:24 Enno Status zugewiesen => erledigt
2016-07-30 21:24 Enno Lösung offen => nicht reproduzierbar
2016-07-30 21:24 Enno Notiz hinzugefügt: 0006652
2016-07-31 10:20 Enno Notiz hinzugefügt: 0006656
2016-07-31 10:22 Enno Status erledigt => Rückmeldung
2016-07-31 10:22 Enno Lösung nicht reproduzierbar => wiedereröffnet
2016-07-31 10:22 Enno Notiz hinzugefügt: 0006657
2016-07-31 11:00 Enno Notiz hinzugefügt: 0006659
2016-07-31 11:05 Enno Notiz hinzugefügt: 0006660
2016-07-31 11:09 Enno Notiz hinzugefügt: 0006661
2016-07-31 11:14 Enno Notiz hinzugefügt: 0006662
2016-07-31 11:15 Enno Status Rückmeldung => zugewiesen
2016-07-31 11:15 Enno Notiz hinzugefügt: 0006663
2016-07-31 13:32 Enno Notiz hinzugefügt: 0006664
2016-07-31 16:16 Enno Notiz hinzugefügt: 0006665
2016-07-31 17:05 Xolgrim Notiz hinzugefügt: 0006666
2016-07-31 18:24 Enno Notiz hinzugefügt: 0006667
2016-08-03 22:47 Julius Notiz hinzugefügt: 0006668
2016-08-04 21:09 Julius Notiz hinzugefügt: 0006669
2016-08-04 21:51 Enno Notiz hinzugefügt: 0006670
2016-08-05 09:03 Xolgrim Beziehung hinzugefügt verwandt mit 0001859
2016-08-05 21:24 Enno Notiz hinzugefügt: 0006671
2016-08-05 22:05 Enno Notiz hinzugefügt: 0006672
2016-08-05 22:15 Julius Notiz hinzugefügt: 0006674
2016-08-05 22:37 Enno Notiz hinzugefügt: 0006676
2016-08-06 14:49 Enno Status zugewiesen => erledigt
2016-08-06 14:49 Enno Lösung wiedereröffnet => erledigt
2016-08-06 14:49 Enno Behoben in Version => 3.9.1
2016-08-06 14:49 Enno Notiz hinzugefügt: 0006680
2016-08-08 12:32 Enno Zielversion => 3.9.1
2017-07-17 13:43 Enno Beziehung hinzugefügt verwandt mit 0002337