Openapoc: [Crash] lors d'une mission repérée par des extraterrestres (défaut de segmentation)

Créé le 9 mars 2019  ·  5Commentaires  ·  Source: OpenApoc/OpenApoc

Crash pendant la mission en mode temps réel

liste gdb
`Thread 1 "principal" signal reçu SIGSEGV, Défaut de segmentation.
OpenApoc::BattleHazard::update (this=0x6000000d, state=..., ticks=1)
à /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 if (ticksUntilVisible > 0)
(gdb) pile d'informations

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

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

1 0x00000000007378f1 dans OpenApoc::Battle::update (ceci=,

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

2 0x000000000008aa757 dans OpenApoc::GameState::update (this=0x5989410, ticks=1)

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

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

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

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

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

5 0x000000000043a1d4 dans principal (argc=, argv=)

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

Commentaire le plus utile

536 pourrait résoudre ce problème, mais il sera difficile à tester car ce bogue se produit une fois dans une lune bleue. Nous devrions fermer ce problème une fois que nous avons fusionné la demande d'extraction et rouvrir si le bogue persiste.

Tous les 5 commentaires

Hmm, on dirait que BattleHazard::update() est appelé sur un objet indésirable -0x6000000d n'a pas l'air raisonnable pour un pointeur de tas....

Je pense que cela est dû à un itérateur invalidé : BattleHazard::update peut finir par appeler BattleHazard::expand , qui à son tour peut appeler die() sur un BattleHazard à proximité. Si l'aléa détruit est le suivant dans l'itération, alors l'itérateur utilisé dans Battle::update devient invalide (voir https://en.cppreference.com/w/cpp/container/set/erase)

C'est la seule explication qui me vient à l'esprit

529 fait planter le jeu plus souvent lors de cette mission. Mais personne ne réagit dessus. euhhh...

De plus, j'ai terminé cette mission en mode temps réel sans aucune erreur plus tard.

Si étrange.

536 pourrait résoudre ce problème, mais il sera difficile à tester car ce bogue se produit une fois dans une lune bleue. Nous devrions fermer ce problème une fois que nous avons fusionné la demande d'extraction et rouvrir si le bogue persiste.

Réponse agréable et rapide. Puis-je vous citer dans ma prochaine vidéo ?

Cette page vous a été utile?
0 / 5 - 0 notes