EarendelDevelopers / factorio-mods

This is a public repository for tracking issues with Earendel's factorio mods.
19 stars 3 forks source link

Desync issue in space exploration version 0.6.81 #226

Closed Spacedestructor closed 2 years ago

Spacedestructor commented 2 years ago

I have updated with my friend yesterday space exploration as usual since we like to keep all our mod sup to date and after updating to 0.6.81 we started to get desync issues, at the time we believed it doe to bad internet but today we rolled bck space exploration to version. 0.6.80 with no other changes to the mod list and no desyncs occured. i have the desync report linked since the save file is too large to directly attach (the link contains both desync reports before the trouble shooting and fater in case this should be relevant) but i just wanted to point out that the desync didnt happen at some point during the game but imideatly within the first 5 seconds after successful connecting. it warried a little im time it took to trigger but always around 3 to 4 seconds after factorio multiplayer manager changed status to represent a successful completion of the connecting attempt.

Also just to get this out of the way since im sure it will come up, no this is not related to the fact that we play on my version of the space exploration modpack, that you commented on before on the mod portal. i made sure to confirm it is directly tied to only space exploration it self.

Wiwiweb commented 2 years ago

Thanks, I reproduced the desync using your save file and 2 clients. I'll look into this...

Wiwiweb commented 2 years ago

Related to Belt Balancer somehow. I disabled all mods except SE (+ dependencies) and Belt Balancer:

SE 0.6.81 + Belt Balancer = desync SE 0.6.80 + Belt Balancer = no problem SE 0.6.81 = no problem

Spacedestructor commented 2 years ago

good to know, for now we are staying on version 0.6.80 since there is no need why we have to update but i hope either you guys or the person who made the belt balancer mod figures out a solution to resolve this. would be rather unfortunate otherwise as our whole base and way we build things is based partial on belt balancer.

InappropriatePenguin commented 2 years ago

Another data point that would suggest it's "belt"-related. I used Hornwitser's script to compare the first reference and desynced savefiles and here was its output:

Unzipping desync-report-2022-08-02_15-39-42.zip

level_with_tags.dat differs
---------------------------
diffing <b'transport-belt-serialiser'> 302973/302973 tokens, this may take a long time

replace   ref[9654:9655] -> des[9654:9655]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <transport-line-item> pos=209517964
ref: b'@\x00\x00\x00>E}\x00l\x01\x00\x01'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <transport-line-item> pos=209517964
des: b'B\x00\x00\x00>E}\x00l\x01\x00\x01'

replace   ref[9672:9673] -> des[9672:9673]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <transport-line-gaps> pos=209518295
ref: b'\xf1\x1b\x00\x00 \x00\x00\x00'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <transport-line-gaps> pos=209518295
des: b'\xef\x1b\x00\x00 \x00\x00\x00'

replace   ref[9678:9679] -> des[9678:9679]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <first-gap-index> pos=209518397
ref: b'\x01\x00\x00\x00'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209517882
    <line> pos=209517909
      <first-gap-index> pos=209518397
des: b'\x00\x00\x00\x00'

replace   ref[9714:9718] -> des[9714:9718]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209518935
    <line> pos=209518962
      <transport-line-item> pos=209519017
ref: b'\xb0\x04\x00\x00\xc9D}\x00l\x01\x00\x01</transport-line-item><transport-line-item>@\x00\x00\x00\x93E}\x00l\x01\x00\x01'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209518935
    <line> pos=209518962
      <transport-line-item> pos=209519017
des: b'\xaf\x04\x00\x00\xc9D}\x00l\x01\x00\x01</transport-line-item><transport-line-item>B\x00\x00\x00\x93E}\x00l\x01\x00\x01'

replace   ref[9732:9733] -> des[9732:9733]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209518935
    <line> pos=209518962
      <transport-line-gaps> pos=209519348
ref: b'A\x17\x00\x00`\x00\x00\x00'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96489> pos=209518935
    <line> pos=209518962
      <transport-line-gaps> pos=209519348
des: b'@\x17\x00\x00`\x00\x00\x00'

replace   ref[10104:10105] -> des[10104:10105]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209525685
    <line> pos=209525712
      <transport-line-item> pos=209525767
ref: b'P\x00\x00\x00\x92G}\x00x\x01\x00\x01'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209525685
    <line> pos=209525712
      <transport-line-item> pos=209525767
des: b'R\x00\x00\x00\x92G}\x00x\x01\x00\x01'

replace   ref[10119:10120] -> des[10119:10120]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209525685
    <line> pos=209525712
      <transport-line-gaps> pos=209526043
ref: b'\xe1\x04\x00\x00\xa0\t\x00\x00'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209525685
    <line> pos=209525712
      <transport-line-gaps> pos=209526043
des: b'\xdf\x04\x00\x00\xa0\t\x00\x00'

replace   ref[10161:10165] -> des[10161:10165]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209526683
    <line> pos=209526710
      <transport-line-item> pos=209526765
ref: b'\xa0\x00\x00\x00;G}\x00x\x01\x00\x01</transport-line-item><transport-line-item>P\x02\x00\x00\x9eG}\x00x\x01\x00\x01'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209526683
    <line> pos=209526710
      <transport-line-item> pos=209526765
des: b'\x9f\x00\x00\x00;G}\x00x\x01\x00\x01</transport-line-item><transport-line-item>R\x02\x00\x00\x9eG}\x00x\x01\x00\x01'

replace   ref[10179:10180] -> des[10179:10180]
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209526683
    <line> pos=209526710
      <transport-line-gaps> pos=209527096
ref: b'A\x04\x00\x00 \t\x00\x00'
<transport-belt-serialiser active-groups=128 active-lines=172> pos=209352135
  <transport-line belt=96509> pos=209526683
    <line> pos=209526710
      <transport-line-gaps> pos=209527096
des: b'@\x04\x00\x00 \t\x00\x00'
Wiwiweb commented 2 years ago

On second thought I'm not sure it's exactly SE 0.6.81+Belt Balancer. My reproduction is inconsistent. I think it depends on when the 2nd player joins for the first time. If you desync on the first join, you'll always desync, if you don't, you'll never desync.

Wiwiweb commented 2 years ago

I was able to reproduce the desync with SE 0.6.80.

I'm tempted to say that this is a Belt Balancer issue, and your friend got lucky on the timing of the join when you restarted your server after downgrading SE.

If my theory is correct then you'd be able to reproduce this with just Belt Balancer, but I can't test it because that crashes Belt Balancer. Plus the base would stop working and you probably wouldn't be able to reproduce whatever exactly is causing the desync.

Spacedestructor commented 2 years ago

so if i understand this correctly i should bring this to the belt balancer author and ask them to have a look at there mod.

Wiwiweb commented 2 years ago

Yes. 👍

Spacedestructor commented 2 years ago

Done, i have let them known and referenced this issue so they can get any information they ma need. thanks for the help anyways, originally i was suspecting advanced fluid handling to be the culprit as it was added the same day the issues appeared.