Openapoc: [崩溃] 外星人发现任务(分段错误)

创建于 2019-03-09  ·  5评论  ·  资料来源: OpenApoc/OpenApoc

在实时模式下执行任务时崩溃

gdb 列表
`线程 1“主”收到信号 SIGSEGV,分段错误。
OpenApoc::BattleHazard::update (this=0x60000000d, state=..., ticks=1)
在 /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 如果(ticksUntilVisible > 0)
(gdb) 信息栈

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

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

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

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

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

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

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

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

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

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

5 0x000000000043a1d4 在主(argc =, argv=)

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

最有用的评论

536 可能会修复此问题,但由于此错误在蓝色月亮中发生一次,因此很难测试。 我们应该在合并拉取请求后关闭此问题,如果错误仍然存​​在,则重新打开。

所有5条评论

嗯,看起来 BattleHazard::update() 正在一个垃圾对象上被调用 -0x60000000d 对于堆指针来说看起来不太正常......

我认为这是由无效的迭代器引起的: BattleHazard::update可能最终会调用BattleHazard::expand ,而后者又可以在附近的 BattleHazard 上调用die() 。 如果被破坏的危害恰好是迭代中的下一个,那么Battle::update使用的迭代器将变为无效(参见 https://en.cppreference.com/w/cpp/container/set/erase)

这是我能想到的唯一解释

529 导致游戏在该任务中更频繁地崩溃。 但没有人对此作出反应。 呃……

此外,我在实时模式下完成了该任务,之后没有任何错误。

这么奇怪。

536 可能会修复此问题,但由于此错误在蓝色月亮中发生一次,因此很难测试。 我们应该在合并拉取请求后关闭此问题,如果错误仍然存​​在,则重新打开。

响应速度快。 我可以在下一个视频中提到你吗?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

nbe-renzel-net picture nbe-renzel-net  ·  3评论

Quickmind01 picture Quickmind01  ·  3评论

Quickmind01 picture Quickmind01  ·  3评论

Quickmind01 picture Quickmind01  ·  3评论

makus82 picture makus82  ·  3评论