Openapoc: [Absturz] bei einer von Außerirdischen entdeckten Mission (Segmentierungsfehler)

Erstellt am 9. März 2019  ·  5Kommentare  ·  Quelle: OpenApoc/OpenApoc

Absturz während der Mission im Echtzeitmodus

gdb-Auflistung
`Thread 1 "Haupt"-Empfangssignal SIGSEGV, Segmentierungsfehler.
OpenApoc::BattleHazard::update (this=0x60000000d, state=..., ticks=1)
unter /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 if (ticksUntilVisible > 0)
(gdb) Info-Stack

0 OpenApoc::BattleHazard::update (this=0x60000000d, state=..., ticks=1)

at /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490

1 0x00000000007378f1 in OpenApoc::Battle::update (this=,

state=..., ticks=1)
at /home/atrosha/OpenApoc/game/state/battle/battle.cpp:1675

2 0x00000000008aa757 in OpenApoc::GameState::update (this=0x5989410, ticks=1)

at /home/atrosha/OpenApoc/game/state/gamestate.cpp:959

3 0x000000000052bf2d in OpenApoc::BattleView::update (this=)

at /home/atrosha/OpenApoc/game/ui/tileview/battleview.cpp:1443

4 0x00000000004569b8 in OpenApoc::Framework::run (this=0xfd14d0,

initialStage=...) at /home/atrosha/OpenApoc/framework/framework.cpp:584

5 0x000000000043a1d4 in Haupt (argc=, argv=)

at /home/atrosha/OpenApoc/game/main.cpp:26`
!BUG! HIGH PRIORITY !BUG! low priority

Hilfreichster Kommentar

536 könnte dies beheben, aber es wird schwer zu testen sein, da dieser Fehler einmal in einem blauen Mond auftritt. Wir sollten dieses Problem schließen, sobald wir die Pull-Anfrage zusammenführen und erneut öffnen, wenn der Fehler weiterhin besteht.

Alle 5 Kommentare

Hmm, sieht so aus, als ob BattleHazard::update() für ein Junk-Objekt aufgerufen wird -0x60000000d sieht für einen Heap-Zeiger nicht vernünftig aus....

Ich denke, dies wird durch einen ungültigen Iterator verursacht: BattleHazard::update kann dazu führen, dass BattleHazard::expand aufgerufen wird, was wiederum die() bei einem nahegelegenen BattleHazard aufrufen kann. Wenn die zerstörte Gefahr zufällig die nächste in der Iteration ist, wird der in Battle::update verwendete Iterator ungültig (siehe https://en.cppreference.com/w/cpp/container/set/erase)

Das ist die einzige Erklärung, die mir einfällt

529 führt dazu, dass das Spiel bei dieser Mission häufiger abstürzt. Aber niemand reagiert darauf. ähhh...

Außerdem habe ich diese Mission später im Echtzeitmodus ohne Fehler beendet.

So seltsam.

536 könnte dies beheben, aber es wird schwer zu testen sein, da dieser Fehler einmal in einem blauen Mond auftritt. Wir sollten dieses Problem schließen, sobald wir die Pull-Anfrage zusammenführen und erneut öffnen, wenn der Fehler weiterhin besteht.

Nette und schnelle Antwort. Darf ich dich in meinem nächsten Video erwähnen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen