Beiträge von Louca

    Das passiert, wenn eines der Monster ein aktives Event besitzt wie zb Recovery Event oder sowas. Hatte ähnliche Probleme wo ich den Hydra Run eingebaut hatte. Wenn z.B Der Mast gekillt wurde ohne vorher das Recovery Event anständig zu killen, crashte die core nach ein paar sekunden. Genau wie du beschrieben hast. Konnte nach dem Tot noch etwas rumlaufen, so vll 4-7 sekunden, dann crash.

    Hab alle Charakterevents in der CHARACTER::Destroy Funktion mit cancel_event beendet, doch das hat nicht geholfen. Hast du sonst noch Ideen?


    Liebe Grüße

    Hallo,


    nachdem ich nun schon mehrere Wochen am verzweifeln bin und nach etlichen Debugging Sessions mit einigen Entwicklern und eigenen Stunden über Stunden keine Lösung gefunden habe, wird es Zeit die Community mit ins Boot zu holen. Vielleicht weiß ja einer von euch mehr.


    Die Grundproblematik:

    In einem bestimmten Dungeon crasht die Core kurz nach dem Aufruf von "d.kill_all()". Ergo die Abfolge ist:

    1) Monster spawnen durch d.regen_file()

    2) Dungeonbedingung (Töte X Monster) erfüllt -> d.kill_all()

    3) Man kann für einige Sekunden weiter machen, doch irgendwann danach (Nachdem man einen weiteren Monster killt) erhält man folgenden Sanitizer Output in der Konsole:


    Sanitizer Output:


    Reproduzierbar?

    Ja.


    Was wurde versucht?

    1) Es wurden die Monster ausgetauscht, um die Fehlerquelle ausfindig zu machen. Kein Erfolg.

    2) Es wurden insgesamt weniger Monster gespawned -> Bei extrem wenig Monstern (5-7 pro Ebene) crasht die Core nicht. Man darf nur kein /kill (Töte alle Monster) benutzen, sondern muss sie Per Linksklick und Schlagen töten.

    3) Es wurde einiges technisches versucht, wie die entity_view.cpp zu refactoren und mehr Abfragen einzufügen auf Entity.

    4) Einen Garbage Collector um Entity zu bauen und anhand der syserr Meldungen eine womöglich 'falsche doppelte Entität' ausfindig zu machen, die beim Entfernen aus der View Probleme macht.

    5) Compilerwechsel (mit Verdacht auf Fehler durch Optimierung).

    6) Die Ebenen des Dungeons wurden geswitched um eine bestimmte Ebene festzumachen -> Auch erfolglos.

    7) Größere Entwickler gefragt (Namen lass ich mal raus, aufjedenfall alle mit +5 Jahren Metinerfahrung) und Ergebnis war nur: "d.kill_all() macht ab und zu Probleme, warum wieso weshalb weiß keiner".

    8. d.purge() statt d.kill_all() verwendet, macht die selben Probleme. 7) scheint damit also unwahrscheinlicher.


    Liebe Grüße

    Louca