Kecelakaan selama misi dalam mode waktu nyata
daftar gdb
`Utas 1 "utama" menerima sinyal SIGSEGV, Kesalahan segmentasi.
OpenApoc::BattleHazard::update (ini=0x60000000d, status=..., ticks=1)
di /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 jika (centangUntilVisible > 0)
(gdb) tumpukan info
at /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
state=..., ticks=1)
at /home/atrosha/OpenApoc/game/state/battle/battle.cpp:1675
at /home/atrosha/OpenApoc/game/state/gamestate.cpp:959
at /home/atrosha/OpenApoc/game/ui/tileview/battleview.cpp:1443
initialStage=...) at /home/atrosha/OpenApoc/framework/framework.cpp:584
at /home/atrosha/OpenApoc/game/main.cpp:26`
Hmm, sepertinya BattleHazard::update() dipanggil pada objek sampah -0x60000000d tidak terlihat waras untuk heap pointer....
Saya pikir ini disebabkan oleh iterator yang tidak valid: BattleHazard::update
mungkin berakhir memanggil BattleHazard::expand
, yang pada gilirannya dapat memanggil die()
di BattleHazard terdekat. Jika hazard yang dimusnahkan menjadi yang berikutnya dalam iterasi, maka iterator yang digunakan di Battle::update
menjadi tidak valid (lihat https://en.cppreference.com/w/cpp/container/set/erase)
Ini adalah satu-satunya penjelasan yang dapat saya pikirkan
Juga, saya menyelesaikan misi itu dalam mode waktu nyata tanpa kesalahan nanti.
Sangat aneh.
Respon bagus dan cepat. Bisakah saya menyebutkan Anda di video saya berikutnya?
Komentar yang paling membantu
536 mungkin memperbaiki ini tetapi akan sulit untuk diuji karena bug ini terjadi sekali dalam bulan biru. Kami harus menutup masalah ini setelah kami menggabungkan permintaan tarik dan membuka kembali jika bug tetap ada.