Openapoc: [Crash] en una misión alienígena (falla de segmentación)

Creado en 9 mar. 2019  ·  5Comentarios  ·  Fuente: OpenApoc/OpenApoc

Choque durante la misión en modo de tiempo real

listado de gdb
`Señal recibida" principal "del hilo 1 SIGSEGV, Fallo de segmentación.
OpenApoc :: BattleHazard :: update (esto = 0x60000000d, estado = ..., ticks = 1)
en /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 si (ticksUntilVisible> 0)
(gdb) pila de información

0 OpenApoc :: BattleHazard :: update (esto = 0x60000000d, estado = ..., ticks = 1)

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

1 0x00000000007378f1 en OpenApoc :: Battle :: actualización (esto =,

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

2 0x00000000008aa757 en OpenApoc :: GameState :: update (esto = 0x5989410, ticks = 1)

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

3 0x000000000052bf2d en OpenApoc :: BattleView :: actualización (esto =)

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

4 0x00000000004569b8 en OpenApoc :: Framework :: run (esto = 0xfd14d0,

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

5 0x000000000043a1d4 en main (argc =, argv =)

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

Comentario más útil

536 podría solucionar esto, pero será difícil de probar ya que este error ocurre una vez en una luna azul. Deberíamos cerrar este problema una vez que fusionamos la solicitud de extracción y reabrir si el error persiste.

Todos 5 comentarios

Hmm, parece que BattleHazard :: update () está siendo llamado en un objeto basura -0x60000000d no parece cuerdo para un puntero de montón ...

Creo que esto se debe a un iterador invalidado: BattleHazard::update puede terminar llamando a BattleHazard::expand , que a su vez puede llamar a die() en un BattleHazard cercano. Si el peligro destruido es el siguiente en la iteración, entonces el iterador usado en Battle::update deja de ser válido (consulte https://en.cppreference.com/w/cpp/container/set/erase)

Esta es la única explicación que se me ocurre

529 hace que el juego se bloquee con más frecuencia en esa misión. Pero nadie reacciona ante eso. ehhh ...

Además, terminé esa misión en modo de tiempo real sin ningún error más tarde.

Tan extraño.

536 podría solucionar esto, pero será difícil de probar ya que este error ocurre una vez en una luna azul. Deberíamos cerrar este problema una vez que fusionamos la solicitud de extracción y reabrir si el error persiste.

Respuesta agradable y rápida. ¿Puedo mencionarlos en mi próximo video?

¿Fue útil esta página
0 / 5 - 0 calificaciones