[Dominik][0.17.15] Alert "cannot construct due to mixing" by player (+crash)

This subforum contains all the issues which we already resolved.
Post Reply
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 2227
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

[Dominik][0.17.15] Alert "cannot construct due to mixing" by player (+crash)

Post by boskid »

What i did:
1/ Placed blueprint

Code: Select all

0eNqdks1qwzAQhN9lzxIolhODXqWUItsbd0F/SHKoMX73ysolpSU0Pu6uNN8MzAq9mTFEchnUCjR4l0C9rZBoctrsu7wEBAWU0QIDp+0+6ZTQ9obcxK0ePskhb2BjQG7EL1Cn7Z0BukyZ8K5Xh+XDzbbHWB48V2IQfCqfvdsdFEHBYAHFZUFEHKg6Qhvywoc4j8g9Gd7rGNEUF79ozYs0LitOFNpIhXc/XQ6x5aGk4jHolYzhAXP0BmfLJ52e8NoXeX9GbQ5FPR+KKn+i23+gS7lqHdVDexncMKYq0UlxOrdNJzq5bd9QtPi/
2/ Hand placed outer 4 assemblers (crude oil unbarrel)
3/ Tried to hand place inner 1 assembler (petrol barrel)

What i expected:
- There should be error sound and flying text over cursor saying "cannot place assembler due to fluid mixing"

What happend:
- There is alert "1 object can't be constructed due to fluid mixing"
alert-on-player-mixing.png
alert-on-player-mixing.png (63.72 KiB) Viewed 2071 times
I consider this to be bug as it spreads information around UI: i expected alert under cursor (as this is player interaction directly, not by robots)

---
minor related bug: when copying settings from one assember to other already placed, there is no alert saying "cannot paste recipe due to fluid mixing" (edit: there is, but it did not show up to me couple of times, and sometimes it is possible to paste recipe that mixes fluids)

---
related crash: fluid mixing check can fail here and let build inner assembler, then crash after saving.

What i did:
1/ new sandbox map with replay
2/ tried to reproduce above issue with alerts
3/ managed to place inner assembler
4/ supprised of result, saved game (
mixing-on-player-placement.zip
(361.86 KiB) Downloaded 108 times
)
5/ when leaving "save" screen, game crashed (
factorio-previous.log
(23.79 KiB) Downloaded 113 times
)

Code: Select all

c:\cygwin64\tmp\factorio-build-z2hre9\src\fluid\fluidbox.cpp (106): FluidBox::PipeConnection::calculateFlowSpeed
c:\cygwin64\tmp\factorio-build-z2hre9\src\fluid\fluidsystem.cpp (63): FluidSystem::update
c:\program files (x86)\microsoft visual studio\2017\buildtools\vc\tools\msvc\14.15.26726\include\ppl.h (2196): Concurrency::_Parallel_chunk_helper<unsigned __int64,unsigned __int64,<lambda_1254a2f84a60b69af2cf9a2bc5bc42ff>,Concurrency::auto_partitioner,0>::operator()
f:\dd\vctools\crt\crtw32\concrt\taskcollection.cpp (370): Concurrency::details::_StructuredTaskCollection::_RunAndWait
c:\program files (x86)\microsoft visual studio\2017\buildtools\vc\tools\msvc\14.15.26726\include\ppl.h (2455): Concurrency::_Parallel_chunk_impl<Concurrency::_Parallel_chunk_helper<unsigned __int64,unsigned __int64,<lambda_1254a2f84a60b69af2cf9a2bc5bc42ff>,Concurrency::auto_partitioner,0>,unsigned __int64,unsigned __int64,<lambda_1254a2f84a60b69af2cf9a2bc5bc42ff>,Concurrency::auto_partitioner const &>
c:\cygwin64\tmp\factorio-build-z2hre9\src\map\map.cpp (1474): Map::updateEntities
c:\cygwin64\tmp\factorio-build-z2hre9\src\game.cpp (191): Game::update
c:\cygwin64\tmp\factorio-build-z2hre9\src\scenario\scenario.cpp (1156): Scenario::update
c:\cygwin64\tmp\factorio-build-z2hre9\src\mainloop.cpp (1104): MainLoop::gameUpdateStep
c:\cygwin64\tmp\factorio-build-z2hre9\src\mainloop.cpp (970): MainLoop::gameUpdateLoop
c:\cygwin64\tmp\factorio-build-z2hre9\src\util\workerthread.cpp (42): WorkerThread::loop
c:\program files (x86)\microsoft visual studio\2017\buildtools\vc\tools\msvc\14.15.26726\include\thr\xthread (230): std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl RouterBase::*)(void),ClientRouter *>,std::default_delete<std::tuple<void (__cdecl RouterBase::*)(void),ClientRouter *> > > >::_Go
c:\program files (x86)\microsoft visual studio\2017\buildtools\vc\tools\msvc\14.15.26726\include\thr\xthread (209): std::_Pad::_Call_func
Attachments
factorio-dump-previous.dmp
(839.63 KiB) Downloaded 98 times

User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 2227
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

Re: [0.17.15] Alert "cannot construct due to mixing" by player (+crash)

Post by boskid »

Crash part expanded:

Sandbox with replay, "all in one"
1/ after building first set:
- part when pasting recipe fails with "can't mix fluids" [good]
2/ after copying full setup:
- it is possible to place inner assembler in left setup (only inner assembler was pasted with blueprint) [bad: fluid mixing]
- there is alert when placing assembler in right setup [bad: alert, not flying text]
3/ saved, but when leaving save screen, crash

Crash cannot be reproduced by simply loading above save file. you need to remove and build inner assembler with recipe that causes mixing

In this one there is different stack trace:

Code: Select all

c:\cygwin64\tmp\factorio-build-z2hre9\src\fluid\fluidbox.cpp (83): FluidBox::PipeConnection::calculateFlowSpeed
c:\cygwin64\tmp\factorio-build-z2hre9\src\fluid\fluidsystem.cpp (63): FluidSystem::update
c:\program files (x86)\microsoft visual studio\2017\buildtools\vc\tools\msvc\14.15.26726\include\ppl.h (2196): Concurrency::_Parallel_chunk_helper<unsigned __int64,unsigned __int64,<lambda_1254a2f84a60b69af2cf9a2bc5bc42ff>,Concurrency::auto_partitioner,0>::operator()
f:\dd\vctools\crt\crtw32\concrt\chores.cpp (149): Concurrency::details::_UnrealizedChore::_StructuredChoreWrapper
f:\dd\vctools\crt\crtw32\concrt\internalcontextbase.cpp (1606): Concurrency::details::InternalContextBase::ExecuteChoreInline
f:\dd\vctools\crt\crtw32\concrt\internalcontextbase.cpp (1721): Concurrency::details::InternalContextBase::Dispatch
f:\dd\vctools\crt\crtw32\concrt\freethreadproxy.cpp (203): Concurrency::details::FreeThreadProxy::Dispatch
f:\dd\vctools\crt\crtw32\concrt\threadproxy.cpp (177): Concurrency::details::ThreadProxy::ThreadProxyMain
-- edit:
related minor issue: i want to barrel oil from pipe directly below assembler, but directly above assembler there is pipe with water. I cannot set recipe because default input pipe for assembler goes from top. I cannot rotate assembler as it has no "fluid-recipe" - this is deadlock. Solution of course is to place assembler somewhere else, setup recipe and rotate-paste settings, or to temporary cut top pipe.

-- edit:
using `/editor`, it is possible to copy-paste building that should not be allowed because of fluid mixing. Using above setup, prepare inner assembler outside of setup and then copy and place it in center - instant fluid mixing, you can then save map. Crash will happen after single tick (using `/editor` time control)
Attachments
factorio-dump-current.dmp
(823.21 KiB) Downloaded 99 times
factorio-current.log
(34.19 KiB) Downloaded 114 times
mixing-on-player-placement-all-in-one.zip
(381.69 KiB) Downloaded 104 times

Dominik
Former Staff
Former Staff
Posts: 658
Joined: Sat Oct 12, 2013 9:08 am
Contact:

Re: [Dominik][0.17.15] Alert "cannot construct due to mixing" by player (+crash)

Post by Dominik »

Hi, thanks for the report. It is an error I made with a fix in the last version. I think that all the issues were from that and are now fixed. I have also split the alerts for the ghost reviving.

Post Reply

Return to “Resolved Problems and Bugs”