Page 1 of 1

[0.14.21] Crash when giving error function a boolean

Posted: Thu Jan 12, 2017 11:37 pm
by Neemys
Hi

If you give the error function a boolean instead of a string the game crash.

Add the following piece of code anywhere (data.lua, control.lua, whatever, it just need to be executed).

Code: Select all

error(true)
or use the provided mod and factorio will crash when it try to execute the line. Here the log for when it crash during data.lua phase of the provided mod.

Code: Select all

   0.003 2017-01-13 00:31:35; Factorio 0.14.21 (build 25327, win64, steam)
   0.003 Operating system: Windows 7 Service Pack 1
   0.003 Program arguments: "Z:\Jeux\Steam\steamapps\common\Factorio\bin\x64\Factorio.exe" 
   0.003 Read data path: Z:/Jeux/Steam/steamapps/common/Factorio/data
   0.003 Write data path: C:/Users/Neemys/AppData/Roaming/Factorio
   0.003 Binaries path: Z:/Jeux/Steam/steamapps/common/Factorio/bin
   0.019 System info: [CPU:         Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz, 8 cores, RAM: 16337MB]
   0.019 Display options: [FullScreen: 1] [VSync: 1] [UIScale: 100%] [MultiSampling: OFF] [Screen: 255]
   0.020 Available display adapters: 2
   0.020  [0]: \\.\DISPLAY1 - NVIDIA GeForce GTX 660 {0x05, [0,0], 1920x1080, 32bit, 60Hz}
   0.020  [1]: \\.\DISPLAY2 - NVIDIA GeForce GTX 660 {0x01, [1920,0], 1920x1080, 32bit, 60Hz}
   0.020 Create display on adapter 0. Size 1280x720 at position [310, 162].
   0.314 Initialised OpenGL:[0] GeForce GTX 660/PCIe/SSE2; driver: 4.5.0 NVIDIA 368.81
   0.315     Video memory size (dedicated/total available/current available): 2048/2048/1680 MB
   0.348 DSound: Starting _dsound_update thread
   0.349 DSound: Enter _dsound_update; tid=8744
   0.350 Desktop composition is active.
   0.350 Graphics options: [Graphics quality: normal] [Video memory usage: all] [Light scale: 100%] [DXT: false]
   0.446 Loading mod core 0.0.0 (data.lua)
   0.451 Loading mod base 0.14.21 (data.lua)
   0.547 Loading mod testbug 1.0.4 (data.lua)
   0.548 Error CrashHandler.cpp:230: Received SIGSEGV
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\exception_filter.cpp (219): _seh_filter_exe
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (273): `__scrt_common_main_seh'::`1'::filt$0
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000140284614)
0000000140284614 (Factorio): (filename not available): __C_specific_handler
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000076E77E8D)
0000000076E77E8D (ntdll): (filename not available): RtlDecodePointer
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000076E684CF)
0000000076E684CF (ntdll): (filename not available): RtlUnwindEx
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000076E9BAC8)
0000000076E9BAC8 (ntdll): (filename not available): KiUserExceptionDispatcher
c:\cygwin64\tmp\factorio-skvdcq\src\util\luahelper.cpp (1258): LuaHelper::packageDofile
c:\cygwin64\tmp\factorio-skvdcq\src\data\luadataloader.cpp (82): LuaDataLoader::loadData
c:\cygwin64\tmp\factorio-skvdcq\src\data\modmanager.cpp (290): ModManager::loadMod
c:\cygwin64\tmp\factorio-skvdcq\src\data\modmanager.cpp (230): ModManager::loadModsPhase
c:\cygwin64\tmp\factorio-skvdcq\src\data\modmanager.cpp (180): ModManager::loadData
c:\cygwin64\tmp\factorio-skvdcq\src\globalcontext.cpp (356): GlobalContext::init
c:\cygwin64\tmp\factorio-skvdcq\src\mainloop.cpp (156): MainLoop::run
c:\cygwin64\tmp\factorio-skvdcq\src\main.cpp (808): wmain
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (255): __scrt_common_main_seh
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000076D459CD)
0000000076D459CD (kernel32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 0000000076E7A2E1)
0000000076E7A2E1 (ntdll): (filename not available): RtlUserThreadStart
   3.503 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.
I know that the error function should be calling with a string but the game shouldn't crash if a mod do something wrong so here the report. Sorry if it has already been reported, doing a search with error and boolean do give lots of result.

Re: [0.14.21] Crash when giving error function a boolean

Posted: Fri Jan 13, 2017 12:51 am
by Rseding91
Fixed for 0.15.

It's actually a failing of the Lua language not being able to convert a Boolean to a string.

Re: [0.14.21] Crash when giving error function a boolean

Posted: Fri Jan 13, 2017 2:49 am
by Neemys
Thanks for the explanation, good luck with the other bug reports ;)