Page 1 of 1

[Dominik][0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Wed Aug 07, 2019 6:58 pm
by boskid
Ref:
- 74252 - uses similar custom fluid fuzzer in control.lua
- 74116 - this issue may be reproduced by this script

Steps to reproduce:
  1. Load "fluid_fuzzer-crash.zip" (more waiting, in case of early save corruption) or "fluid_fuzzer-crash-b.zip" (less waiting)
    fluid_fuzzer-crash.zip
    (169.13 KiB) Downloaded 130 times
    fluid_fuzzer-crash-b.zip
    (170.61 KiB) Downloaded 138 times
  2. Increase speed to x64
  3. Wait some time (65s for first save, 5s for second save)
  4. Crash
    log

Re: [0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Tue Aug 13, 2019 3:07 pm
by boskid
[0.17.64]
74269-manual-reproduction.gif
74269-manual-reproduction.gif (493.63 KiB) Viewed 3803 times
-- edit:
issue looks to be around building pipe-to-ground ghost (may be similar to 74252), where unconnected pipe-to-ground pair is now broken: left one connects to ghost but right one connects(not exactly because of fluid mixing) to left one. This state is not stable save-loadable, because after save-load, right pipe-to-ground will disconnect.

This also produces some heavy-mode desync when right fluid system is changed somehow (part of gif where i build additional pipe above existing one). With heavy-mode enabled, this may crash after building pipe above existing pipe with water, without heavy-mode it will crash on removing pipe with water on assembler output.
log of heavy mode crashing game
-- edit:
Another crash when testing pipe-to-ground ghost:
log of crash in entity get selection box
-- edit:
And another:
crash in FluidBox notifyBlockedUndergroundConnectionsOfDestroy
-- edit:
And yet another one:
reproduction
crash in consistency
-- edit:
Factorio Pandora's Box:
reproduction
crash compatible connection is disconnected

Re: [0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Tue Aug 13, 2019 6:26 pm
by boskid
Just LOL: new vanilla feature: underground connection from pipe-to-ground directly to pipe, and diagonal!
74269-dangling-pointer.gif
74269-dangling-pointer.gif (519.44 KiB) Viewed 3768 times
Most likely after removal of pipe-to-ground in center, right pipe-to-ground points to "related pipe-to-ground" that is already removed. New pipe that is placed when created gets same address in memory as removed pipe-to-ground and so connection is drawn diagonal to regular pipe

Re: [0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Tue Aug 13, 2019 6:29 pm
by steinio
Can you please stop breaking the game :D

Re: [0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Tue Aug 13, 2019 6:33 pm
by boskid
steinio wrote: Tue Aug 13, 2019 6:29 pm Can you please stop breaking the game :D
I will when this bug report gets assigned to someone (@Dominik?) - then i will know devs admit it is a bug with "enough reproduction" (and laugh) (and huge spike on crash tracker)

Re: [Dominik][0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Thu Aug 15, 2019 1:19 pm
by Dominik
Yes, this is very closely related to the 74252 but still a separate issue. I should have thought of these ghost things.

I was on a holiday. I come back and find this mayhem. Want to go back.

Re: [Dominik][0.17.63] FluidSystem.cpp:171: connection.isConnected() was not true

Posted: Thu Aug 15, 2019 7:25 pm
by Jap2.0
Dominik wrote: Thu Aug 15, 2019 1:19 pm I was on a holiday. I come back and find this mayhem. Want to go back.
This whole fluid system rework has been way more fun than you expected, hasn't it?