Opened 5 years ago

Closed 5 years ago

#5604 closed defect (fixed)

OOS on rejoin - a24 Pathfinder

Reported by: elexis Owned by: wraitii
Priority: Release Blocker Milestone: Alpha 24
Component: Simulation Keywords: regression
Cc: Patch: Phab:D2317

Description

As of r22958, there is an OOS on rejoin, apparently on every rejoin where a unit had moved.

Sample replay attached that reproduces the serializationtest failure using -rejointest=20 from commandline.

Attachments (2)

replay_and_simstate.7z (387.4 KB ) - added by elexis 5 years ago.
diff.diff (14.1 KB ) - added by elexis 5 years ago.
simstate difference

Download all attachments as: .zip

Change History (7)

by elexis, 5 years ago

Attachment: replay_and_simstate.7z added

by elexis, 5 years ago

Attachment: diff.diff added

simstate difference

comment:1 by wraitii, 5 years ago

Thanks for the replay, though I can only reproduce with -rejointest=21, not -rejointest=20 using r22961 (which ought to run identically) ?

comment:2 by wraitii, 5 years ago

I think I get the issue, it's r22902. I failed to realised that I needed to keep the requests in the pathfinder in case of serialisation.

comment:3 by wraitii, 5 years ago

Owner: set to wraitii
Patch: Phab:D2317

in reply to:  1 comment:4 by elexis, 5 years ago

Replying to wraitii:

Thanks for the replay, though I can only reproduce with -rejointest=21, not -rejointest=20 using r22961 (which ought to run identically) ?

(I think it was turn 30 and I posted the wrong terminal line.)

comment:5 by wraitii, 5 years ago

Resolution: fixed
Status: newclosed

In 22979:

Fix OOS introduced by pathfinder threading preparation diff rP22902

Following rP22902, paths were computed at the end of turn N, and then messages were sent at the beginning of turn N+1. However, the path requests were removed at the end of turn N and so weren't serialised, and neither were computed paths. This meant rejoiners would OOS when the game was serialised with pending path results.

To fix this in preparation for threading, the architecture needs to change slightly so that requests are kept and serialised correctly, and rejoiners can compute the paths after deserialisation, in order to send the messages at the beginning of turn N+1.

Fixes #5604

Reported By: elexis

Differential Revision: https://code.wildfiregames.com/D2317

Note: See TracTickets for help on using tickets.