[C++] Corecrash in Dungeon

In diesem Bereich sind Themen vom Themenersteller als erledigt zu markieren, wenn die Frage beantwortet oder das Problem gelöst wurde. Das Thema wird daraufhin automatisch geschlossen.
Klicke hierzu auf "Thema bearbeiten > Als erledigt markieren".
  • 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

  • SolitaryVoice1362

    Hat das Thema geschlossen
  • Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.