crash fixes of tiberium spread & grow in long games and a new tag - #2400
Open
FS-21 wants to merge 3 commits into
Open
crash fixes of tiberium spread & grow in long games and a new tag#2400FS-21 wants to merge 3 commits into
FS-21 wants to merge 3 commits into
Conversation
- Fix long-game heap overflow crash in Tiberium growth priority queue - Prevent Tiberium expansion queue stalls with proactive compaction - Support Tiberium spread, growth, and germination onto cardinal ramps via AllowRamps - Fix division by zero crashes when rendering Tiberium overlays on slopes
|
Nightly build for this pull request:
This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What kind of change is this?
Skip Changelog).Skip Changelog,Skip Docs).Skip Docs).Skip Changelog,Skip Docs,Skip Credits).Description (all the technical explanation of the problems & vanilla crashes is done with AI, I already made tests and the crashes when the tiberium spreaded a lot in the map is gone, finally).
This PR fixes two longstanding vanilla engine issues with Tiberium growth/spread queues, and introduces an opt-in flag to allow resources to expand onto slopes/ramps.
1. Long-game Heap Overflow Crash (
0x005657A5/0x00723005)GrowthLogicandSpreadLogiceventually overflow their preallocatedPriorityQueueClassNodebuffers (PriorityQueueClassNode::SurfaceDataCount()), corrupting heap headers and crashing the game.0x7235CE,0x722B48,0x722586,0x72302E).2. Tiberium Growth / Spread Queue Stall
CellIndexesWithTiberium[surfaceIdx] = false.0x722574.3. Ramp Expansion Support (
AllowRamps)CellClass::RecalcAttributes(0x0047D36E) forcibly wipedOverlayTypeIndex = -1andOverlayData = 0wheneverSlopeIndex != 0.CellClass::Can_Tiberium_GerminatecheckedIsometricTileTypeClass->AllowTiberium, which isfalsefor ramp tiles across all theater INIs.Can_Tiberium_Grow,Can_Tiberium_Spread,Spread_Tiberium, andIncrease_Tiberiumrejected slope indices.Draw_OverlayandGetContainingRectcould divide by zero when slope overlays were rendered without initialized slope counts.AllowRamps=yesunder individual Tiberium sections allows cardinal ramps (slopes 1..4) to germinate, grow through stages, and spread naturally to/from ramp cells, settingNumSlopes = 8and adding division-by-zero guards.In
rulesmd.ini: