تحطم أثناء المهمة في وضع الوقت الحقيقي
قائمة gdb
استقبل "الخيط 1" إشارة SIGSEGV ، خطأ الانقسام.
OpenApoc :: BattleHazard :: update (this = 0x60000000d، state = ...، ticks = 1)
في /home/atrosha/OpenApoc/game/state/battle/battlehazard.cpp:490
490 if (ticksUntilVisible> 0)
(gdb) معلومات المكدس
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`
حسنًا ، يبدو أن BattleHazard :: update () يتم استدعاؤه على كائن غير هام -0x60000000d لا يبدو عاقلًا بالنسبة لمؤشر كومة ....
أعتقد أن هذا ناتج عن مكرر غير صالح: BattleHazard::update
قد ينتهي به الأمر باستدعاء BattleHazard::expand
، والذي بدوره يمكنه استدعاء die()
على BattleHazard قريبة. إذا كان الخطر المدمر هو التالي في التكرار ، فإن المكرر المستخدم في Battle::update
يصبح غير صالح (راجع https://en.cppreference.com/w/cpp/container/set/erase)
هذا هو التفسير الوحيد الذي يمكنني التفكير فيه
أيضًا ، لقد أنهيت هذه المهمة في وضع الوقت الفعلي دون أي أخطاء لاحقًا.
غريب جدا.
استجابة لطيفة وسريعة. هل يمكنني أن أذكرك في الفيديو التالي الخاص بي؟
التعليق الأكثر فائدة
536 قد يصلح هذا ولكن سيكون من الصعب اختباره لأن هذا الخطأ يحدث مرة واحدة في القمر الأزرق. يجب أن نغلق هذه المشكلة بمجرد دمج طلب السحب وإعادة الفتح في حالة استمرار الخطأ.