Opened 3 years ago

Closed 3 years ago

#4596 closed defect (fixed)

OOS on rejoin on Extinct Volcano

Reported by: elexis Owned by: Itms
Priority: Release Blocker Milestone: Alpha 22
Component: UI & Simulation Keywords:
Cc: Patch: Phab:D675

Description

In this r19667 game, I rejoined fatherbushidos game on Extinct Volcano and got an OOS on rejoin.

Attachments (2)

oos.7z (267.1 KB) - added by elexis 3 years ago.
rejointest.7z (155.6 KB) - added by elexis 3 years ago.
Reproduced on turn 37 on an equivalent patched scenario map

Download all attachments as: .zip

Change History (8)

Changed 3 years ago by elexis

Attachment: oos.7z added

comment:1 Changed 3 years ago by elexis

Diff above contains different waypoints:

     group: 7641
     notify: 7641
     ticket: 591461
     x0: 252.0625
     z0: 427.0625
     clearance: 10
     range: 36
     type: 0
-    goal x: 257.625
-    goal z: 421.25
+    goal x: 259.25
+    goal z: 418.5
     group: 7643
     notify: 7643
     ticket: 591463
     x0: 250.9375
     z0: 447.9375
     clearance: 10
-    range: 16
+    range: 16.01391
     type: 0
-    goal x: 257.625
-    goal z: 438.125
+    goal x: 259.25
+    goal z: 434.25

We can reproduce the bug by rejoining if there is a moving ship on rising water. Might want to set debugWaterRise to true in the script. Probably should create a scenario equivalent so that we can run the rejointest to prove the correctness of a potential fix.

Also we can notice that the renderer doesn't show the current water height until updating it again, while the ships remain in the correct position.

comment:2 Changed 3 years ago by elexis

Patch: Phab:D638

For the graphical non-simulation part: Phab:D638

Changed 3 years ago by elexis

Attachment: rejointest.7z added

Reproduced on turn 37 on an equivalent patched scenario map

comment:3 Changed 3 years ago by elexis

Reproduce using Serialization-Rejoin-test:

  1. Put this scenario map equivalent into the maps directory
  2. Apply the attached patch that makes the water rise immediately
  3. Extract the replay and run pyrogenesis -mod=public -replay="..." -rejointest=36

comment:4 Changed 3 years ago by Itms

Patch: Phab:D638Phab:D675

Thanks for the data used for reproducing :)

Here is a patch. More insight about what happened here: the previous hacky code discarded the obstruction changes caused by the entities deleted during the water rise.

comment:5 Changed 3 years ago by elexis

In 19862:

Recompute water graphics when changing the water level and upon deserialization to fix a graphical (non-simulation) OOS on rejoin.

Differential Revision: https://code.wildfiregames.com/D638
Refs #4596
Contains a fix mentioned by leper.

comment:6 Changed 3 years ago by Itms

Owner: set to Itms
Resolution: fixed
Status: newclosed

In 19916:

Rewrite the pathfinder dirtiness information system.

Remove all hacks while keeping most optimizations in memory management. This fixes incomplete grid updates that could cause OOS on rejoin, fixes #4596.

Tested by: elexis, ffffffff
Reviewers: leper, wraitii
Differential Revision: https://code.wildfiregames.com/D675

Note: See TracTickets for help on using tickets.