Page 1 of 1

[kovarex] [0.16.7] Error RailPath.cpp:65: Path is already off.

Posted: Wed Dec 27, 2017 1:32 am
by oracleguy
Started having this crash with my save file. It seems to happen in less than 5 minutes with the map running and just sitting there so it is very reproducible. I'm running it from a Linux headless server if it matters.

Code: Select all

Factorio crashed. Generating symbolized stacktrace, please wait ...
c:\cygwin64\tmp\factorio-azpuox\libraries\stackwalker\stackwalker.cpp (923): StackWalker::ShowCallstack
c:\cygwin64\tmp\factorio-azpuox\src\util\logger.cpp (371): Logger::writeStacktrace
c:\cygwin64\tmp\factorio-azpuox\src\util\logger.cpp (470): Logger::logStacktrace
c:\cygwin64\tmp\factorio-azpuox\src\util\logging.cpp (78): Logging::logAndAbortOrThrow
c:\cygwin64\tmp\factorio-azpuox\src\util\logging.cpp (73): Logging::logAndAbortOrThrow
c:\cygwin64\tmp\factorio-azpuox\src\rail\railpath.cpp (65): RailPath::updatePosition
c:\cygwin64\tmp\factorio-azpuox\src\rail\train.cpp (1559): Train::resolveRailTransition
c:\cygwin64\tmp\factorio-azpuox\src\rail\railjoint.cpp (93): RailJoint::startOnNewRail
c:\cygwin64\tmp\factorio-azpuox\src\entity\rollingstock.cpp (265): RollingStock::Carriage::moveFrontJointForward
c:\cygwin64\tmp\factorio-azpuox\src\entity\rollingstock.cpp (341): RollingStock::move
c:\cygwin64\tmp\factorio-azpuox\src\rail\train.cpp (1810): Train::tryToMove
c:\cygwin64\tmp\factorio-azpuox\src\rail\train.cpp (1681): Train::move
c:\cygwin64\tmp\factorio-azpuox\src\rail\train.cpp (1197): Train::updateSpeedAndMove
c:\cygwin64\tmp\factorio-azpuox\src\rail\train.cpp (877): Train::update
c:\cygwin64\tmp\factorio-azpuox\src\rail\trainmanager.cpp (188): TrainManager::update
c:\cygwin64\tmp\factorio-azpuox\src\map\map.cpp (1232): Map::update
c:\cygwin64\tmp\factorio-azpuox\src\game.cpp (153): Game::update
c:\cygwin64\tmp\factorio-azpuox\src\scenario\scenario.cpp (822): Scenario::update
c:\cygwin64\tmp\factorio-azpuox\src\mainloop.cpp (985): MainLoop::gameUpdateStep
c:\cygwin64\tmp\factorio-azpuox\src\mainloop.cpp (852): MainLoop::gameUpdateLoop
c:\cygwin64\tmp\factorio-azpuox\src\util\workerthread.cpp (36): WorkerThread::loop
c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.12.25827\include\thr\xthread (232): std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl MapGenerationHelper::*)(void) __ptr64,MapGenerationHelper * __ptr64>,std::default_delete<std::tuple<void (__cdecl MapGenerationHelper::*)(void) __ptr64,MapGenerationHelper * __ptr64> > > >::_Go
c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.12.25827\include\thr\xthread (211): std::_Pad::_Call_func
d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp (115): thread_start<unsigned int (__cdecl*)(void * __ptr64)>
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FF8CDC31FE4)
00007FF8CDC31FE4 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FF8CDD6EF91)
00007FF8CDD6EF91 (ntdll): (filename not available): RtlUserThreadStart
 247.743 Error RailPath.cpp:65: Path is already off.
Logger::writeStacktrace skipped.
 247.743 Error CrashHandler.cpp:128: Map tick at moment of crash: 15514970
 247.743 Error Util.cpp:67: Unexpected error occurred. If you're running the latest version of the game you can help us solve the problem by posting the contents of the log file on the Factorio forums.
Please also include the save file(s), any mods you may be using, and any steps you know of to reproduce the crash.
 251.904 Creating crash dump.
 251.993 CrashDump success
You can download the map and two crash dumps from this link: https://drive.google.com/open?id=1rZFya ... KFAnW1AXjb

Re: [kovarex] [0.16.7] Error RailPath.cpp:65: Path is already off.

Posted: Fri Dec 29, 2017 1:46 am
by kovarex
Thank you for the report, the reproducibility helped.
I spent quite some time checking the path finding internals to find out how could it suddenly find path in opposite direction to what it had second ago and why the path in the original direction didn't exist at all.
In the first stage, I discovered, that the train could actually move the other direction as well, as the part of the rail had two-sided signals.
In the second stage, I discovered that the new path is way longer than the new one, so I thought that it is doing some big detour, but it still didn't make any sense, that it couldn't find the original path when the longer path exists.
I was checking if rails weren't destroyed and other things.

Just to find out, the stops were controlled by circuit network and the stations of the same "Ore pickup" name are all over the map, and the circuit network is shutting them down when there is not enough ore ... the AHA moment :)

Long story short, it is fixed for the next release.

Re: [kovarex] [0.16.7] Error RailPath.cpp:65: Path is already off.

Posted: Fri Dec 29, 2017 2:34 am
by oracleguy
You are welcome; I am glad you were able to figure it out. You guys are awesome.