[Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
[Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
In a two player game with my brother, immediately after building this water setup I was desynced. I kept being desyched after logging back in.
When he removed this setup and replaced it with a simple water pump, the desyncs stopped.
Here's a screenshot of the setup: https://steamcommunity.com/id/paulcdeje ... 5401324134
Here's the desync reports (uploading to the forums wasn't working):
https://s3-us-west-2.amazonaws.com/paul ... -02-49.zip
https://s3-us-west-2.amazonaws.com/paul ... -53-47.zip
https://s3-us-west-2.amazonaws.com/paul ... -01-59.zip
https://s3-us-west-2.amazonaws.com/paul ... -03-45.zip
When he removed this setup and replaced it with a simple water pump, the desyncs stopped.
Here's a screenshot of the setup: https://steamcommunity.com/id/paulcdeje ... 5401324134
Here's the desync reports (uploading to the forums wasn't working):
https://s3-us-west-2.amazonaws.com/paul ... -02-49.zip
https://s3-us-west-2.amazonaws.com/paul ... -53-47.zip
https://s3-us-west-2.amazonaws.com/paul ... -01-59.zip
https://s3-us-west-2.amazonaws.com/paul ... -03-45.zip
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Thank you for the nice detailed report. Unfortunately I am not able to find the cause of the desync, nor to get it when I load your save. It looks like something got wrong but it got fixed by the save/load or by something that we have in our current version, but I rather do not believe that.
So unfortunately nothing I can do now, but let me know if you manage to break it again. I would need to know the order of events that led to it.
Actually I have a bit of a suspicion that it might be related to the shape of the oil setup as I just have on my table another save that uses the same geometry and something breaks there. But that does not explain why you fixed it by removing the pump.
So unfortunately nothing I can do now, but let me know if you manage to break it again. I would need to know the order of events that led to it.
Actually I have a bit of a suspicion that it might be related to the shape of the oil setup as I just have on my table another save that uses the same geometry and something breaks there. But that does not explain why you fixed it by removing the pump.
- TruePikachu
- Filter Inserter
- Posts: 978
- Joined: Sat Apr 09, 2016 8:39 pm
- Contact:
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
If you still have the save file, can you please take a screenshot that has the grid visible? (The easiest way to display the grid is to use the non-pause-menu pause keybinding -- shift+space by default)
Could there potentially be a race condition of sorts in the pump, stemming from the fluidbox thread? It consumes electricity, but it also contains fluidboxes, and the fluidbox levels change quite a lot depending on if electricity is applied or not.
Could there potentially be a race condition of sorts in the pump, stemming from the fluidbox thread? It consumes electricity, but it also contains fluidboxes, and the fluidbox levels change quite a lot depending on if electricity is applied or not.
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Screenshot of what exactly?
The structure I had in mind is on the screenshot here "viewtopic.php?f=182&t=66564". But I don't think that is an issue. That would either work or not.
I am not sure what you mean.
Electricity should not play any part in it.
The structure I had in mind is on the screenshot here "viewtopic.php?f=182&t=66564". But I don't think that is an issue. That would either work or not.
I am not sure what you mean.
Electricity should not play any part in it.
- TruePikachu
- Filter Inserter
- Posts: 978
- Joined: Sat Apr 09, 2016 8:39 pm
- Contact:
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Well, the screenshot with the grid was more to check where the chunk boundaries lie, since those have caused issues in the past.
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
We had several saves and loads which did not fix the desync. However dismantling the fluid contraption did.Dominik wrote: ↑Mon Mar 18, 2019 1:12 pm Thank you for the nice detailed report. Unfortunately I am not able to find the cause of the desync, nor to get it when I load your save. It looks like something got wrong but it got fixed by the save/load or by something that we have in our current version, but I rather do not believe that.
So unfortunately nothing I can do now, but let me know if you manage to break it again. I would need to know the order of events that led to it.
Actually I have a bit of a suspicion that it might be related to the shape of the oil setup as I just have on my table another save that uses the same geometry and something breaks there. But that does not explain why you fixed it by removing the pump.
As for what TruePikachu says the contraption does not cross any chunk boundaries.
However the output leads to quite some maze of pipes of course.
EDIT: Screenshot here: https://steamcommunity.com/id/paulcdeje ... 3553012469
EDIT AGAIN: Here's the oil setup it connects to: https://steamcommunity.com/id/paulcdeje ... 3553018042
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Pikachu, what is it that you are suspecting exactly, what could the chunk split cause in your opinion?
In the desync I see a lot of differences related to power but that is usually only an effect of something else - basically anything changes, it changes the power draw and that propagates into the whole power network, coal consumption etc.
For example in this case - the pipes behind the pump are full. So if for one player some space for more fluid was freed, the pump did an action and consumed power and there it goes.
In the desync I see a lot of differences related to power but that is usually only an effect of something else - basically anything changes, it changes the power draw and that propagates into the whole power network, coal consumption etc.
For example in this case - the pipes behind the pump are full. So if for one player some space for more fluid was freed, the pump did an action and consumed power and there it goes.
- TruePikachu
- Filter Inserter
- Posts: 978
- Joined: Sat Apr 09, 2016 8:39 pm
- Contact:
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
I've learned, from looking over a large number of bugs here, that if some setup sometimes works (for some given definition of "works") and sometimes doesn't, the position of the chunk boundaries is frequently relevant to determining why. I know this 100% applies to inserter operation, I think I recall it being relevant to some sideloading behaviour, and it was the core of that one glitch where you could handcraft at double speed.
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Yes, I have seen recently how it affects inserters. It certainly does not affect fluids themselves nor pumps. Inserters could change how some assemblers operate and that could affect fluid draw. But I have never encountered such issue. Also that would cause desyncs regardless of pump usage. It is scary to think of such possibilities though
- TruePikachu
- Filter Inserter
- Posts: 978
- Joined: Sat Apr 09, 2016 8:39 pm
- Contact:
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Yeah, I just realised that the main "equivilant" that chunk boundaries have with inserters/belts, in the fluid system, is...build order!
For a system where there's five fluid entities, there's 120 different possible build orders, which isn't trivial to test. Since the main desync cause is power-related, under the assumption that this particular setup is the culprit, the cause is probably going to be related to how much fluid is behind the pump (i.e. in the tank directly connected to the pump).
A desync indicates that the client is doing something differently from the server. While stuff like differences between floating-point operation in edge cases could be the cause of a fluid-related desync (all else -- including build order -- being equal), another possiblilty can be the fluid working in a separate thread.
My main theory right now is that some data that one of the threads (main or fluid) depends on might be getting modified by the other mid-computation, or perhaps not getting transferred correctly (e.g. main thread assumes fluid thread completely finished and reads the results out, but the results are stale because they hadn't been written by the fluid thread yet due to instruction reordering).
For a system where there's five fluid entities, there's 120 different possible build orders, which isn't trivial to test. Since the main desync cause is power-related, under the assumption that this particular setup is the culprit, the cause is probably going to be related to how much fluid is behind the pump (i.e. in the tank directly connected to the pump).
A desync indicates that the client is doing something differently from the server. While stuff like differences between floating-point operation in edge cases could be the cause of a fluid-related desync (all else -- including build order -- being equal), another possiblilty can be the fluid working in a separate thread.
My main theory right now is that some data that one of the threads (main or fluid) depends on might be getting modified by the other mid-computation, or perhaps not getting transferred correctly (e.g. main thread assumes fluid thread completely finished and reads the results out, but the results are stale because they hadn't been written by the fluid thread yet due to instruction reordering).
Re: [Dominik][0.17.14] continuous desyncs when putting two water pumps into a pair of tanks?
Don't get carried away too much Any such things are isolated out. Threads are safe. Evaluation order is taken care of. The actuall problem will be something much more trivial.
The main desync is not power related. The power is just a symptom of some difference in the fluids.
The main desync is not power related. The power is just a symptom of some difference in the fluids.