Technology give-item with 0 count freezes the game and crash
Posted: Fri Dec 16, 2016 7:07 pm
by Mooncat
Bug: If technology has an "effect" with type = "give-item" and count = 0, the game will freeze and then crash if such technology is researched.
Steps to reproduce:
1) select a technology and change its effects to be something like this:
or install the following mod. It changes the effects of "automation" as above:
2) start a new game and research that technology
3) observe when it finish
Here is the log:
Either of the following:
a) game does not crash. No item is given.
b) count has to be at least 1 or error will occur when game initializes.
Steps to reproduce:
1) select a technology and change its effects to be something like this:
Code: Select all
effects =
{
{
type = "give-item",
name = "inserter",
count = 0
}
}
- tech-give-zero-item-crash_0.1.0.zip
- (813 Bytes) Downloaded 59 times
3) observe when it finish
Here is the log:
log
Expected result:Code: Select all
0.009 2016-12-17 01:32:05; Factorio 0.14.21 (build 25327, win64, steam)
0.009 Operating system: Windows 7 Service Pack 1
0.009 Program arguments: "C:\Program Files (x86)\Steam\steamapps\common\Factorio\bin\x64\Factorio.exe" "--mod-directory" "C:\Users\Andy\AppData\Roaming\Factorio\no_mods"
0.009 Read data path: C:/Program Files (x86)/Steam/steamapps/common/Factorio/data
0.009 Write data path: C:/Users/Andy/AppData/Roaming/Factorio
0.009 Binaries path: C:/Program Files (x86)/Steam/steamapps/common/Factorio/bin
0.031 System info: [CPU: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz, 4 cores, RAM: 8174MB]
0.031 Display options: [FullScreen: 0] [VSync: 0] [UIScale: 100%] [MultiSampling: OFF] [Screen: 255]
0.032 Available display adapters: 1
0.032 [0]: \\.\DISPLAY1 - NVIDIA GeForce GTS 450 {0x05, [0,0], 1920x1080, 32bit, 60Hz}
0.032 Create display on adapter 0. Size 1280x720 at position [310, 162].
0.080 Initialised Direct3D:[0] NVIDIA GeForce GTS 450; driver: nvd3dumx.dll 21.21.13.7633
0.083 Video memory size (dedicated video/dedicated system/shared system/available): 979/0/3071/4048 MB
0.114 DSound: Starting _dsound_update thread
0.114 DSound: Enter _dsound_update; tid=2684
0.115 Device reset internal.
0.117 Desktop composition is active.
0.117 Graphics options: [Graphics quality: normal] [Video memory usage: high] [Light scale: 100%] [DXT: auto]
0.197 Loading mod core 0.0.0 (data.lua)
0.203 Loading mod base 0.14.21 (data.lua)
0.316 Loading mod tech-give-zero-item-crash 0.1.0 (data.lua)
0.388 Checksum for core: 1291735968
0.388 Checksum for mod base: 786624017
0.388 Checksum for mod tech-give-zero-item-crash: 4082235034
0.787 Info PlayerData.cpp:55: Local player-data.json available, timestamp 1481828885
0.787 Info PlayerData.cpp:62: Cloud player-data.json unavailable
0.982 Initial atlas bitmap size is 16384
0.985 Created atlas bitmap 16384x3847
1.078 Created atlas bitmap 4096x4088
1.167 Created atlas bitmap 4096x4096
1.193 Created atlas bitmap 4096x3960
1.759 Created atlas bitmap 4096x968
1.770 Created atlas bitmap 4096x3652
17.028 Sprites loaded
17.028 Convert atlas 4096x4088 to: compressed
18.044 Convert atlas 4096x4096 to: compressed
19.315 Convert atlas 4096x3960 to: compressed
20.162 Convert atlas 4096x968 to: trilinear-filtering
20.272 Convert atlas 4096x3652 to: mipmap
22.667 Loading sounds...
24.596 Custom inputs active: 0
24.654 Factorio initialised
1199.531 Info Scenario.cpp:152: Map version 0.14.21-0
1199.589 Checksum for script C:/Users/Andy/AppData/Roaming/Factorio/temp/currently-playing/control.lua: 1057114497
Factorio crashed. Generating symbolized stacktrace, please wait ...
c:\cygwin64\tmp\factorio-skvdcq\libraries\stackwalker\stackwalker.cpp (906): StackWalker::ShowCallstack
c:\cygwin64\tmp\factorio-skvdcq\src\util\logger.cpp (337): Logger::writeStacktrace
c:\cygwin64\tmp\factorio-skvdcq\src\util\logger.cpp (391): Logger::logStacktrace
c:\cygwin64\tmp\factorio-skvdcq\src\entity\itementity.cpp (33): ItemEntity::ItemEntity
c:\cygwin64\tmp\factorio-skvdcq\src\surface\surface.cpp (1063): Surface::dropItemStackAround
c:\cygwin64\tmp\factorio-skvdcq\src\entity\character.cpp (318): Character::exhaustTransfer
c:\cygwin64\tmp\factorio-skvdcq\src\technology\giveitemmodifier.cpp (70): GiveItemModifier::applyEffect
c:\cygwin64\tmp\factorio-skvdcq\src\technology\technology.cpp (203): Technology::setResearchedAndApply
c:\cygwin64\tmp\factorio-skvdcq\src\technology\researchmanager.cpp (181): ResearchManager::onResearchProgressChanged
c:\cygwin64\tmp\factorio-skvdcq\src\entity\lab.cpp (225): Lab::update
c:\cygwin64\tmp\factorio-skvdcq\src\surface\chunk.cpp (502): Chunk::update
c:\cygwin64\tmp\factorio-skvdcq\src\surface\surface.cpp (860): Surface::update
c:\cygwin64\tmp\factorio-skvdcq\src\map\map.cpp (1132): Map::update
c:\cygwin64\tmp\factorio-skvdcq\src\game.cpp (144): Game::update
c:\cygwin64\tmp\factorio-skvdcq\src\scenario\scenario.cpp (842): Scenario::update
c:\cygwin64\tmp\factorio-skvdcq\src\mainloop.cpp (761): MainLoop::gameUpdateStep
c:\cygwin64\tmp\factorio-skvdcq\src\mainloop.cpp (630): MainLoop::gameUpdateLoop
c:\cygwin64\tmp\factorio-skvdcq\src\util\workerthread.cpp (34): WorkerThread::loop
c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread (247): std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void) __ptr64,WorkerThread * __ptr64>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void) __ptr64,WorkerThread * __ptr64> > > >::_Run
c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread (210): 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: 00000000772059ED)
00000000772059ED (kernel32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 000000007733B371)
000000007733B371 (ntdll): (filename not available): RtlUserThreadStart
1359.500 Error ItemEntity.cpp:33: Item stack is empty.
Factorio crashed. Generating symbolized stacktrace, please wait ...
c:\cygwin64\tmp\factorio-skvdcq\libraries\stackwalker\stackwalker.cpp (906): StackWalker::ShowCallstack
c:\cygwin64\tmp\factorio-skvdcq\src\util\logger.cpp (337): Logger::writeStacktrace
c:\cygwin64\tmp\factorio-skvdcq\src\util\logger.cpp (391): Logger::logStacktrace
c:\cygwin64\tmp\factorio-skvdcq\src\util\crashhandler.cpp (105): CrashHandler::writeStackTrace
c:\cygwin64\tmp\factorio-skvdcq\src\util\crashhandler.cpp (233): CrashHandler::SignalHandler
d:\th\minkernel\crts\ucrt\src\appcrt\misc\signal.cpp (516): raise
d:\th\minkernel\crts\ucrt\src\appcrt\startup\abort.cpp (71): abort
c:\cygwin64\tmp\factorio-skvdcq\src\entity\itementity.cpp (33): ItemEntity::ItemEntity
c:\cygwin64\tmp\factorio-skvdcq\src\surface\surface.cpp (1063): Surface::dropItemStackAround
c:\cygwin64\tmp\factorio-skvdcq\src\entity\character.cpp (318): Character::exhaustTransfer
c:\cygwin64\tmp\factorio-skvdcq\src\technology\giveitemmodifier.cpp (70): GiveItemModifier::applyEffect
c:\cygwin64\tmp\factorio-skvdcq\src\technology\technology.cpp (203): Technology::setResearchedAndApply
c:\cygwin64\tmp\factorio-skvdcq\src\technology\researchmanager.cpp (181): ResearchManager::onResearchProgressChanged
c:\cygwin64\tmp\factorio-skvdcq\src\entity\lab.cpp (225): Lab::update
c:\cygwin64\tmp\factorio-skvdcq\src\surface\chunk.cpp (502): Chunk::update
c:\cygwin64\tmp\factorio-skvdcq\src\surface\surface.cpp (860): Surface::update
c:\cygwin64\tmp\factorio-skvdcq\src\map\map.cpp (1132): Map::update
c:\cygwin64\tmp\factorio-skvdcq\src\game.cpp (144): Game::update
c:\cygwin64\tmp\factorio-skvdcq\src\scenario\scenario.cpp (842): Scenario::update
c:\cygwin64\tmp\factorio-skvdcq\src\mainloop.cpp (761): MainLoop::gameUpdateStep
c:\cygwin64\tmp\factorio-skvdcq\src\mainloop.cpp (630): MainLoop::gameUpdateLoop
c:\cygwin64\tmp\factorio-skvdcq\src\util\workerthread.cpp (34): WorkerThread::loop
c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread (247): std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void) __ptr64,WorkerThread * __ptr64>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void) __ptr64,WorkerThread * __ptr64> > > >::_Run
c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread (210): 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: 00000000772059ED)
00000000772059ED (kernel32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 000000007733B371)
000000007733B371 (ntdll): (filename not available): RtlUserThreadStart
1363.133 Error CrashHandler.cpp:106: Map tick at moment of crash: 8040
1363.133 Error Util.cpp:77: 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.
Either of the following:
a) game does not crash. No item is given.
b) count has to be at least 1 or error will occur when game initializes.