Opened 9 years ago

Closed 9 years ago

#3055 closed defect (fixed)

OOS on rejoin

Reported by: leper Owned by: leper
Priority: Release Blocker Milestone: Alpha 18
Component: Core engine Keywords:
Cc: Patch:

Description (last modified by leper)

We played an 8 player match (4vs4) and one player crashed at some point (or left due to experiencing #2809) and then on rejoin we had an OOS. Dumps and commands.txt attached.

Attachments (4)

oos_elexis_rejoining.zip (1.6 MB ) - added by leper 9 years ago.
oos_leper_not_host_but_no_dcon.zip (1.6 MB ) - added by leper 9 years ago.
cmd.zip (148.0 KB ) - added by leper 9 years ago.
commands.txt (5.4 KB ) - added by leper 9 years ago.
Small commands.txt to reproduce it.

Change History (11)

by leper, 9 years ago

Attachment: oos_elexis_rejoining.zip added

by leper, 9 years ago

Attachment: cmd.zip added

comment:1 by leper, 9 years ago

Description: modified (diff)

The game crashed later on (sadly I didn't get a trace), but the OOS is still a valid issue.

comment:2 by elexis, 9 years ago

I voluntarily exited the game without resign. I restarted 0ad, rejoined and got an out of sync error right away. The crash happened 5-6 minutes after that.

comment:3 by leper, 9 years ago

--- oos_dump_leper_not_host_but_no_dcon.txt	2015-02-14 23:59:40.744666000 +0100
+++ oos_dump_elexis_joining_back.txt	2015-02-15 00:23:49.933482565 +0100
@@ -2062508,21 +2062508,21 @@
     goal v x: 0.70743
     goal v z: -0.7074
     goal hw: 16.05
     goal hh: 14.05
   Vision:
   VisualActor:
     base actor: "units/mauryans/trader.xml"
     r: 1
     g: 1
     b: 1
-    anim run threshold: 13.4375
+    anim run threshold: 12.25
     anim name: "idle"
     anim once: false
     anim speed: 1
     sound group: ""
     anim desync: 0.05
     anim sync repeat time: 0
     seed: 17896
     actor: "units/mauryans/trader.xml"
   AIProxy:
   Armour:
@@ -2062872,21 +2062872,21 @@
     goal v x: 0.70743
     goal v z: -0.7074
     goal hw: 16.05
     goal hh: 14.05
   Vision:
   VisualActor:
     base actor: "units/mauryans/trader.xml"
     r: 1
     g: 1
     b: 1
-    anim run threshold: 13.4375
+    anim run threshold: 12.25
     anim name: "idle"
     anim once: false
     anim speed: 1
     sound group: ""
     anim desync: 0.05
     anim sync repeat time: 0
     seed: 17897
     actor: "units/mauryans/trader.xml"
   AIProxy:
   Armour:
@@ -2063258,21 +2063258,21 @@
     goal v x: 0.70743
     goal v z: -0.7074
     goal hw: 16.05
     goal hh: 14.05
   Vision:
   VisualActor:
     base actor: "units/mauryans/trader.xml"
     r: 1
     g: 1
     b: 1
-    anim run threshold: 13.4375
+    anim run threshold: 12.25
     anim name: "idle"
     anim once: false
     anim speed: 1
     sound group: ""
     anim desync: 0.05
     anim sync repeat time: 0
     seed: 17898
     actor: "units/mauryans/trader.xml"
   AIProxy:
   Armour:
@@ -2063680,21 +2063680,21 @@
     goal v x: 0.70743
     goal v z: -0.7074
     goal hw: 16.05
     goal hh: 14.05
   Vision:
   VisualActor:
     base actor: "units/mauryans/trader.xml"
     r: 1
     g: 1
     b: 1
-    anim run threshold: 13.4375
+    anim run threshold: 12.25
     anim name: "idle"
     anim once: false
     anim speed: 1
     sound group: ""
     anim desync: 0.05
     anim sync repeat time: 0
     seed: 17899
     actor: "units/mauryans/trader.xml"
   AIProxy:
   Armour:
@@ -2064082,21 +2064082,21 @@
     goal v x: 0.70743
     goal v z: -0.7074
     goal hw: 16.05
     goal hh: 14.05
   Vision:
   VisualActor:
     base actor: "units/mauryans/trader.xml"
     r: 1
     g: 1
     b: 1
-    anim run threshold: 13.4375
+    anim run threshold: 12.25
     anim name: "idle"
     anim once: false
     anim speed: 1
     sound group: ""
     anim desync: 0.05
     anim sync repeat time: 0
     seed: 17900
     actor: "units/mauryans/trader.xml"
   AIProxy:
   Armour:

Diff with some context above. elexis joined back turn 2670. Someone researched speed_trader_01 on turn 1802, which is the cause for the higher anim run threshold in my oos_dump.

Should be easily verifiable by launching the trader demo in multiplayer, researching that tech and rejoining.

comment:4 by historic_bruno, 9 years ago

Confirmed with serialization test mode, it fails once that tech is researched.

comment:5 by elexis, 9 years ago

One should be able to test for similar OOS bugs by researching all upgrades and then rejoining.

in reply to:  5 comment:6 by historic_bruno, 9 years ago

Replying to elexis:

One should be able to test for similar OOS bugs by researching all upgrades and then rejoining.

That is true, but you should also have created one of every unit and building for your civ. This particular bug only affects existing units that are "upgraded" by the tech. Cheats and sandbox maps will be most convenient for testing this I think :)

by leper, 9 years ago

Attachment: commands.txt added

Small commands.txt to reproduce it.

comment:7 by leper, 9 years ago

Owner: set to leper
Resolution: fixed
Status: newclosed

In 16364:

Recreate some tech modified values upon deserialization. Fixes #3055.

Also check for some possible null pointers.

Note: See TracTickets for help on using tickets.