While trying to update the Research Queue mod (viewtopic.php?f=92&t=17219) to work on Factorio v0.13.8, I ran into a MEMORY_ACCESS_EXCEPTION.
Was looking into the LUA code trying to figure out what could cause this exception and nothing was sticking out, so opened up Visual Studio and decided to Debug Factorio with it to try and see what was happening and found the cause of this bug.
I will use the symbol names below that VS gave me to help isolate where the issue is.
I also found another related issue which wont cause a crash, but instead an infinite loop (or close enough) in Factorio. As they are both related I will talk about them both here, however I will talk about the MEMORY_ACCESS_EXCEPTION one first.
Quick background into the code
In the function ResearchManager::onResearchProgressChanged you do a call to Technology::setResearchAndApply. During that function call another call is made out to the LUA on_research_finished event. After Technology::setResearchAndApply finishes, you decrement a value (I will call it "Research Flag" from now on, it has no symbol associated with it), check Research Flag is zero and returns.
If a LUA script calls game.forces[event.research.force.name].current_research = (new value) then this will cause a new research to be started. As part of that process Research Flag is set to 1.
Memory Access Crash
The game does need to be in a specific state for this crash to occur, otherwise instead of crashing, it will just cause an infinite loop. The state the game needs to be in is:
No research is currently going on.
A LUA script calls game.forces[some force].current_research = (new value) anywhere in its code.
Once this happens, the following will cause the crash.
The issue occurs when the LUA script call to set the research is done during the on_research_finished event. In this case:
Technology::setResearchAndApply is called
The LUA script is called
The LUA script will set the new technology to research, Research Flag is set to 1.
Technology::setResearchAndApply returns
Research Flag's value is decremented by 1.
Research Flag's value is checked against zero, is found equal and the function returns.
However the game is now in a unusual state, because research is going on but ResearchFlag's value is set to zero. If the next time ResearchManager::onResearchProgressChanged() is called the LUA script again sets a new research, the above steps will again happen, the game will continue to run, but will still be in this unexpected state.
The next step of this issue occurs when the LUA script does not set a new research. In this case the following happens
Technology::setResearchAndApply is called
The LUA script is called
The LUA script does not set the new technology to research, Research Flag stays at 0.
Technology::setResearchAndApply returns
Research Flag's value is decremented by 1. It now is -1
Research Flag's value is checked against zero, is found not to be equal and the code continues.
Code reads from a pointer that is uninitialized (nullptr), this causes a MEMORY_ACCESS_EXCEPTION and the game crashes.
Infinite Loop
To set up this case, the game must already be doing a research when Research Queue is told to start up a new queue that has the same technology. (eg, you are researching Automation 1, and Research Queue is told to research everything up to Electronics 1).
In this case during the last stage of the MEMORY ACCESS crash, the following will occur:
Technology::setResearchAndApply is called
The LUA script is called
The LUA script does not set the new technology to research, Research Flag is stays at 0.
Technology::setResearchAndApply returns
Research Flag's value is decremented by 1. It now is -1
Research Flag's value is checked against zero, is found not to be equal and the code continues.
Code checks a pointer (but in this case it is initialized) and continues on, everything seems to be working - but we are still in a bad state.
After some time a new research is told to start. As part of the code to start a new research it will clear any existing researches and as it thinks there is existing research (Research Flag's value is != 0) it will cause an almost infinite loop by constantly trying to clear research until research flag is set back to zero.
[0.13.8] [Pending] on_research_finished research crash.
Re: [0.13.8] on_research_finished research crash.
Thanks for the report,
Could you provide the mod you are working with and the log file generated from the crash?
Could you provide the mod you are working with and the log file generated from the crash?
Re: [0.13.8] [Pending] on_research_finished research crash.
Sure, attached is the log file as well as the mod file for Research Queue.
I removed a lot of my own debug logging from the log file (most of the [RQ] in function X logs), but otherwise it is the same.
Note, with the infinite loop situation, no log file is produced.
I removed a lot of my own debug logging from the log file (most of the [RQ] in function X logs), but otherwise it is the same.
Note, with the infinite loop situation, no log file is produced.
- Attachments
-
- research-queue_1.2.7.zip
- Research Queue Mod File, partly updated for Facotrio v0.13.8
- (50.18 KiB) Downloaded 168 times
-
- factorio-current_researchNullptr.log
- Nullptr exception log file.
- (7.04 KiB) Downloaded 180 times
Re: [0.13.8] [Pending] on_research_finished research crash.
Im having trouble reproducing the issue,
Could you provide a specific set of lua script console commands that can reproduce the issue?
Specific steps to reproduce would be great too, as i tried understanding what you'd written but must be doing something wrong
Could you provide a specific set of lua script console commands that can reproduce the issue?
Specific steps to reproduce would be great too, as i tried understanding what you'd written but must be doing something wrong
Re: [0.13.8] [Pending] on_research_finished research crash.
So there seems to be several different ways to make it crash, at different spots but they all revolve around this one issue.
This version actually crashes in a different place to where it was crashing with research queue, however it is from the same cause.
I just wrote my own mod to create this error everytime.
Just install the mod, and start a new sandbox (it would probably also work on normal mode, but I cannot be bothered manually getting up to that point just for a crash).
Then lay out a simple lab setup and manually select Automation 1 as your research.
When the research completes, the research window will show up again - press escape. Do NOT select the research here, doing so will reset the "research flag" variable.
The mod will now start researching electronics - the game is now in the unexpected state. "Research Flag" is zero yet research is going on.
When electronics finishes the mod should automatically start researching Automation 2. This time the research windows should NOT show up. If it does then you are in a different state than I was.
Once Automation 2 finishes, the game will crash with the MEMORY_ACCESS_EXCEPTION. - With ResearchQueue it will be inside the ResearchManager::onResearchProgressChanged function just before a call to startNewResearch() when it is getting a pointer to pass into the function, with this mod it is inside the Lab::checkIngredients function, just after a check to see if some two neighbouring members of the same object are equal (they are at object+0x20 and object+0x28), after that check fails and right before the next call it will crash.
So below is more technical and includes assembly code and stuff like that to help you understand exactly where the issue is occuring.
If you are debugging the game with an IDE and can watch variable values and when functions are called, look for the function luaWriteCurrentResearch(lua_State* L) being called during the call to Technology::setResearchAndApply(). If this call happens, it will call the ResearchManager::enqueueResearch function which will change the value for "research flag". It is the change here that can cause issues. Because once Technology::setResearchAndApply() returns, "Research Flags" value will be decremented, but the research started by ResearchManager::enqueueResearch will continue on.
Also "Research Flag" is a 64bit int (the assembly is sub qword(ebx + 0x20h) to decrement it) and the code will shortly branch between returning (which it basically always does under normal circumstances because there is no way to set Research Flag to a value > 1), or calling ResearchManager::startNewResearch().
If you are live watching the code and variables, if before Technology::setResearchAndApply() is called, the value of "Research Flag" is 0, you are in the invalid state.
The crash will occur slightly later in the onResearchProgressChanged() function, after the call to std::dequeue there is a branch if the dereferenced value returned by dequeue is nullptr (it wont be).
You get a few more objects and 2 commands before the call to startNewResearch you get an object from an array. With Research Queue, this command is the one that can crash because it is:
mov rdx, qword ptr[rdx + rcx * 8] but at this point rdx and rcx are both 0.
If it doesn't crash here (which it wont with my mod because rdx is initialized due to the user manually starting the automation research I believe), it will crash on the next update tick when it does a call to Lab::checkIngredients().
In cases of the infinite loop, that is caused by ResearchManager::enqueueResearch first trimming the queue - which is why Research Flag can never be >1 under normal circumstances. It uses the "Research Flag" variable to get the queue length, and while != 0 will dequeue an item. Given Research Flag is 64bits and is currently -1, it isn't going to become 0 anytime soon.
This version actually crashes in a different place to where it was crashing with research queue, however it is from the same cause.
I just wrote my own mod to create this error everytime.
Just install the mod, and start a new sandbox (it would probably also work on normal mode, but I cannot be bothered manually getting up to that point just for a crash).
Then lay out a simple lab setup and manually select Automation 1 as your research.
When the research completes, the research window will show up again - press escape. Do NOT select the research here, doing so will reset the "research flag" variable.
The mod will now start researching electronics - the game is now in the unexpected state. "Research Flag" is zero yet research is going on.
When electronics finishes the mod should automatically start researching Automation 2. This time the research windows should NOT show up. If it does then you are in a different state than I was.
Once Automation 2 finishes, the game will crash with the MEMORY_ACCESS_EXCEPTION. - With ResearchQueue it will be inside the ResearchManager::onResearchProgressChanged function just before a call to startNewResearch() when it is getting a pointer to pass into the function, with this mod it is inside the Lab::checkIngredients function, just after a check to see if some two neighbouring members of the same object are equal (they are at object+0x20 and object+0x28), after that check fails and right before the next call it will crash.
So below is more technical and includes assembly code and stuff like that to help you understand exactly where the issue is occuring.
If you are debugging the game with an IDE and can watch variable values and when functions are called, look for the function luaWriteCurrentResearch(lua_State* L) being called during the call to Technology::setResearchAndApply(). If this call happens, it will call the ResearchManager::enqueueResearch function which will change the value for "research flag". It is the change here that can cause issues. Because once Technology::setResearchAndApply() returns, "Research Flags" value will be decremented, but the research started by ResearchManager::enqueueResearch will continue on.
Also "Research Flag" is a 64bit int (the assembly is sub qword(ebx + 0x20h) to decrement it) and the code will shortly branch between returning (which it basically always does under normal circumstances because there is no way to set Research Flag to a value > 1), or calling ResearchManager::startNewResearch().
If you are live watching the code and variables, if before Technology::setResearchAndApply() is called, the value of "Research Flag" is 0, you are in the invalid state.
The crash will occur slightly later in the onResearchProgressChanged() function, after the call to std::dequeue there is a branch if the dereferenced value returned by dequeue is nullptr (it wont be).
You get a few more objects and 2 commands before the call to startNewResearch you get an object from an array. With Research Queue, this command is the one that can crash because it is:
mov rdx, qword ptr[rdx + rcx * 8] but at this point rdx and rcx are both 0.
If it doesn't crash here (which it wont with my mod because rdx is initialized due to the user manually starting the automation research I believe), it will crash on the next update tick when it does a call to Lab::checkIngredients().
In cases of the infinite loop, that is caused by ResearchManager::enqueueResearch first trimming the queue - which is why Research Flag can never be >1 under normal circumstances. It uses the "Research Flag" variable to get the queue length, and while != 0 will dequeue an item. Given Research Flag is 64bits and is currently -1, it isn't going to become 0 anytime soon.
- Attachments
-
- Crash Factorio_0.0.1.zip
- Crashes Factorio v0.13.8... Do not run it unless you like crashes.
- (1.09 KiB) Downloaded 140 times
Re: [0.13.8] [Pending] on_research_finished research crash.
Fixed for 0.13.9:
- Fixed crash when setting new research in the on_research_completed event.
- Fixed crash when setting new research in the on_research_completed event.
If you want to get ahold of me I'm almost always on Discord.
Re: [0.13.8] [Pending] on_research_finished research crash.
JackB1024, that was pretty cool! Respect.
Even without knowing or seeing the code I could understand what was going on from your explanation.
Even without knowing or seeing the code I could understand what was going on from your explanation.
Re: [0.13.8] [Pending] on_research_finished research crash.
When is 0.13.9 released?
I load the save and 3 seconds later a research is finished and i'm probably traped in this bug.
If i'm wrong here i will make a new thread, but this was my first thought on event.
Greetings steinio
I load the save and 3 seconds later a research is finished and i'm probably traped in this bug.
Code: Select all
0.001 2016-07-15 19:13:43; Factorio 0.13.8 (build 23239, win64, steam)
0.002 Operating system: Windows 10
0.002 Program arguments: "D:\SteamLibrary\steamapps\common\Factorio\bin\x64\Factorio.exe" "--wait-to-close" "4964"
0.002 Read data path: D:/SteamLibrary/steamapps/common/Factorio/data
0.002 Write data path: D:/SteamLibrary/steamapps/common/Factorio
0.002 Binaries path: D:/SteamLibrary/steamapps/common/Factorio/bin
0.019 Graphics options: [FullScreen: true] [VSync: false] [UIScale: 125%] [MultiSampling: OFF] [Graphics quality: normal] [Video memory usage: all] [Light scale: 100%] [Screen: 255] [DXT: false]
0.020 Available display adapters: 1
0.020 [0]: \\.\DISPLAY1 - Intel(R) HD Graphics Family {0x05, [0,0], 1920x1080, 32bit, 60Hz}
0.020 Create display on adapter 0. Size 1600x900 at position [150, 72].
0.141 Initialised Direct3D:[0] NVIDIA GeForce GT 735M; driver: nvd3dumx.dll 10.18.13.6869
0.146 Video memory size (dedicated video/dedicated system/shared system/available): 2020/0/4045/4088 MB
0.187 Desktop composition is active.
0.500 Loading mod core 0.0.0 (data.lua)
0.504 Loading mod base 0.13.8 (data.lua)
0.627 Loading mod Big_Brother 0.3.0 (data.lua)
0.723 Loading mod blueprint-string 3.0.3 (data.lua)
0.801 Loading mod Crafted Artifacts 2.0.0 (data.lua)
0.880 Loading mod angelsores-disableinfiniteores 0.1.1 (data.lua)
0.949 Loading mod Bergius_Process 0.1.2 (data.lua)
1.039 Loading mod BetterFluidColors 1.0.1 (data.lua)
1.105 Loading mod BigDrill 0.3.5 (data.lua)
1.175 Loading mod BigWoodenPowerPole 0.0.3 (data.lua)
1.261 Loading mod bobconfig 0.13.1 (data.lua)
1.335 Loading mod boblibrary 0.13.1 (data.lua)
1.423 Loading mod color-coding 1.1.0 (data.lua)
1.502 Loading mod Concrete_Lamppost 0.1.1 (data.lua)
1.578 Loading mod EvoGUI 0.4.104 (data.lua)
1.663 Loading mod factorio-reach 2.0.3 (data.lua)
1.735 Loading mod FactorioMaps 0.6.0 (data.lua)
1.814 Loading mod Flow Control 2.0.0 (data.lua)
1.904 Loading mod Fluid Void 1.0.3 (data.lua)
1.977 Loading mod Honk 2.0.0 (data.lua)
2.055 Loading mod KS_Power 0.1.4 (data.lua)
2.135 Loading mod Loader 0.0.1 (data.lua)
2.238 Loading mod MagneticFloor 0.1.1 (data.lua)
2.315 Loading mod MapLabels 0.1.1 (data.lua)
2.392 Loading mod Potato 1.0.0 (data.lua)
2.471 Loading mod RailTanker 1.3.32 (data.lua)
2.472 Script data.lua:18: done
2.579 Loading mod ScoreExtended 1.0.9 (data.lua)
2.658 Loading mod Stainless Steel Wagon 1.0.1 (data.lua)
2.754 Loading mod UraniumPower 0.6.4 (data.lua)
2.847 Loading mod VoidChestInstant 1.0.1 (data.lua)
2.955 Loading mod Warehousing 0.0.10 (data.lua)
3.043 Loading mod YARM 0.7.101 (data.lua)
3.137 Loading mod yi_railway 0.3.10 (data.lua)
3.276 Loading mod Yuoki 0.3.55 (data.lua)
3.408 Loading mod bobenemies 0.13.1 (data.lua)
3.551 Loading mod bobores 0.13.1 (data.lua)
3.717 Loading mod yi_engines 0.3.16 (data.lua)
3.869 Loading mod z_yira_american 0.3.4 (data.lua)
4.045 Loading mod z_yira_UP 0.3.3 (data.lua)
4.191 Loading mod z_yira_yuokirails 0.3.3 (data.lua)
4.361 Loading mod bobtech 0.13.0 (data.lua)
4.527 Loading mod bobplates 0.13.2 (data.lua)
4.693 Loading mod angelsrefining 0.2.5 (data.lua)
4.928 Loading mod bobassembly 0.13.0 (data.lua)
5.097 Loading mod bobelectronics 0.13.1 (data.lua)
5.285 Loading mod bobgreenhouse 0.13.2 (data.lua)
5.499 Loading mod boblogistics 0.13.4 (data.lua)
5.694 Loading mod bobmining 0.13.1 (data.lua)
5.899 Loading mod bobpower 0.13.1 (data.lua)
6.156 Loading mod bobrevamp 0.13.0 (data.lua)
6.352 Loading mod angelsinfiniteores 0.3.1 (data.lua)
6.566 Loading mod angelsprocessing 0.2.0 (data.lua)
6.799 Loading mod bobmodules 0.13.0 (data.lua)
7.075 Loading mod bobwarfare 0.13.4 (data.lua)
7.305 Loading mod Orbital Ion Cannon 1.3.0 (data.lua)
7.536 Loading mod Satellite Uplink Station 1.0.0 (data.lua)
7.787 Loading mod Big_Brother 0.3.0 (data-updates.lua)
8.105 Loading mod bobconfig 0.13.1 (data-updates.lua)
8.336 Loading mod bobenemies 0.13.1 (data-updates.lua)
8.601 Loading mod bobores 0.13.1 (data-updates.lua)
8.928 Loading mod bobtech 0.13.0 (data-updates.lua)
9.159 Loading mod MiningTools 1.0.16 (data-updates.lua)
9.441 Loading mod rso-mod 2.0.9 (data-updates.lua)
9.671 Loading mod bobplates 0.13.2 (data-updates.lua)
9.950 Loading mod angelsrefining 0.2.5 (data-updates.lua)
10.223 Loading mod bobassembly 0.13.0 (data-updates.lua)
10.469 Loading mod bobelectronics 0.13.1 (data-updates.lua)
10.763 Loading mod bobgreenhouse 0.13.2 (data-updates.lua)
11.011 Loading mod boblogistics 0.13.4 (data-updates.lua)
11.016 Script technology-functions.lua:24: Technology inserter-stack-size-bonus-4 does not exist.
11.252 Loading mod bobmining 0.13.1 (data-updates.lua)
11.573 Loading mod bobpower 0.13.1 (data-updates.lua)
11.807 Loading mod bobrevamp 0.13.0 (data-updates.lua)
12.051 Loading mod bobmodules 0.13.0 (data-updates.lua)
12.359 Loading mod bobwarfare 0.13.4 (data-updates.lua)
12.592 Loading mod Orbital Ion Cannon 1.3.0 (data-updates.lua)
12.824 Loading mod RailTanker 1.3.32 (data-final-fixes.lua)
13.072 Loading mod Squeak Through 1.1.3 (data-final-fixes.lua)
13.356 Loading mod bobelectronics 0.13.1 (data-final-fixes.lua)
13.613 Loading mod angelsinfiniteores 0.3.1 (data-final-fixes.lua)
13.858 Checksum for core: 714099156
13.858 Checksum for mod base: 1905699976
13.858 Checksum for mod Big_Brother: 180679385
13.858 Checksum for mod blueprint-string: 2370144521
13.858 Checksum for mod Crafted Artifacts: 2576711156
13.858 Checksum for mod angelsores-disableinfiniteores: 459381050
13.858 Checksum for mod Bergius_Process: 4267996501
13.858 Checksum for mod BetterFluidColors: 1223381635
13.858 Checksum for mod BigDrill: 3670343886
13.858 Checksum for mod BigWoodenPowerPole: 1632622646
13.858 Checksum for mod bobconfig: 3903115925
13.858 Checksum for mod boblibrary: 3719200648
13.858 Checksum for mod bobtechsave: 0
13.858 Checksum for mod color-coding: 1364593114
13.858 Checksum for mod Concrete_Lamppost: 2883059235
13.858 Checksum for mod EvoGUI: 1040096666
13.858 Checksum for mod factorio-reach: 223169401
13.858 Checksum for mod FactorioMaps: 1004700098
13.858 Checksum for mod Flow Control: 4252853042
13.858 Checksum for mod Fluid Void: 1461162325
13.858 Checksum for mod Honk: 2302555571
13.858 Checksum for mod KS_Power: 181953323
13.858 Checksum for mod Loader: 2235975466
13.858 Checksum for mod MagneticFloor: 1992541304
13.859 Checksum for mod MapLabels: 3727818788
13.859 Checksum for mod Potato: 210546998
13.859 Checksum for mod RailTanker: 886730006
13.859 Checksum for mod ScoreExtended: 3052219186
13.859 Checksum for mod Squeak Through: 3024636449
13.859 Checksum for mod Stainless Steel Wagon: 1462541304
13.859 Checksum for mod UraniumPower: 432379650
13.859 Checksum for mod VoidChestInstant: 798133373
13.859 Checksum for mod Warehousing: 3149064619
13.859 Checksum for mod YARM: 1471126532
13.859 Checksum for mod yi_railway: 4124911212
13.859 Checksum for mod Yuoki: 4150692765
13.859 Checksum for mod bobenemies: 236131212
13.859 Checksum for mod bobores: 3064781262
13.859 Checksum for mod steinios_logistic_sensor: 0
13.859 Checksum for mod steinios_research_sensor: 0
13.859 Checksum for mod steinios_wind_sensor: 0
13.859 Checksum for mod yi_engines: 195227622
13.859 Checksum for mod z_yira_american: 1662702490
13.859 Checksum for mod z_yira_UP: 3289932843
13.859 Checksum for mod z_yira_yuokirails: 735296978
13.859 Checksum for mod bobtech: 84910783
13.859 Checksum for mod MiningTools: 2956757149
13.859 Checksum for mod rso-mod: 27849727
13.859 Checksum for mod bobplates: 996338412
13.859 Checksum for mod angelsrefining: 3483595302
13.859 Checksum for mod bobassembly: 73411764
13.859 Checksum for mod bobelectronics: 718470343
13.859 Checksum for mod bobgreenhouse: 2288073750
13.859 Checksum for mod boblogistics: 2182177295
13.859 Checksum for mod bobmining: 3435149013
13.859 Checksum for mod bobpower: 2782224193
13.859 Checksum for mod bobrevamp: 1272453139
13.859 Checksum for mod angelsinfiniteores: 269307132
13.859 Checksum for mod angelsprocessing: 282447012
13.859 Checksum for mod bobmodules: 2066445511
13.859 Checksum for mod bobwarfare: 1061803940
13.859 Checksum for mod Orbital Ion Cannon: 4247862195
13.859 Checksum for mod Satellite Uplink Station: 4148500026
16.086 Initial atlas bitmap size is 16384
16.127 Created atlas bitmap 16384x16382
17.178 Created atlas bitmap 16384x11938
17.806 Created atlas bitmap 4096x1784
43.079 Sprites loaded
43.079 Convert atlas 4096x1784 to: trilinear-filtering
44.648 Loading sounds...
47.062 Custom inputs active: 0
47.103 Factorio initialised
75.425 Loading map D:/SteamLibrary\steamapps\common\Factorio\saves\_autosave1.zip
75.458 Info Scenario.cpp:127: Map version 0.13.8-1
75.899 Checksum for script D:/SteamLibrary/steamapps/common/Factorio/temp/currently-playing/control.lua: 900459546
75.903 Checksum for script __Big_Brother__/control.lua: 751753306
75.912 Checksum for script __blueprint-string__/control.lua: 1853645101
75.914 Checksum for script __BigDrill__/control.lua: 3882048750
75.915 Checksum for script __bobtechsave__/control.lua: 1098752798
75.916 Checksum for script __Concrete_Lamppost__/control.lua: 3837682243
75.920 Checksum for script __EvoGUI__/control.lua: 2392634121
75.923 Checksum for script __FactorioMaps__/control.lua: 3263891712
75.924 Checksum for script __Flow Control__/control.lua: 2993992164
75.925 Checksum for script __Fluid Void__/control.lua: 1021643490
75.926 Checksum for script __Honk__/control.lua: 732705837
75.928 Checksum for script __KS_Power__/control.lua: 1219573510
75.930 Checksum for script __MagneticFloor__/control.lua: 2215458914
75.932 Checksum for script __MapLabels__/control.lua: 4242473369
75.932 Checksum for script __Potato__/control.lua: 1656324814
75.934 Checksum for script __RailTanker__/control.lua: 843196296
75.936 Checksum for script __ScoreExtended__/control.lua: 1899618805
75.940 Checksum for script __UraniumPower__/control.lua: 2663311719
75.941 Checksum for script __VoidChestInstant__/control.lua: 3529544710
75.942 Checksum for script __Warehousing__/control.lua: 3153892539
75.946 Checksum for script __YARM__/control.lua: 616803594
75.948 Checksum for script __yi_railway__/control.lua: 993953413
75.949 Checksum for script __Yuoki__/control.lua: 1545924437
75.950 Checksum for script __bobores__/control.lua: 3583780511
75.951 Checksum for script __steinios_logistic_sensor__/control.lua: 3458621932
75.952 Checksum for script __steinios_research_sensor__/control.lua: 2700498688
75.954 Checksum for script __steinios_wind_sensor__/control.lua: 224040895
75.956 Checksum for script __yi_engines__/control.lua: 3862663743
75.959 Checksum for script __MiningTools__/control.lua: 538781287
75.970 Checksum for script __rso-mod__/control.lua: 3833272620
75.970 Checksum for script __angelsrefining__/control.lua: 884011260
75.971 Checksum for script __boblogistics__/control.lua: 1944473365
75.976 Checksum for script __Orbital Ion Cannon__/control.lua: 2573826740
75.978 Checksum for script __Satellite Uplink Station__/control.lua: 2668329648
80.251 Error CrashHandler.cpp:109: Exception Code: c0000005, Address: 00007FF647B2BEE5
80.251 Error CrashHandler.cpp:119: Exception Context:
rax=ffffffffffffffff, rbx=0000023c9e52c910, rcx=0000000000000000,
rdx=0000000000000000, rsi=0000023ca9822da0, rdi=0000023c9e52c910,
rip=00007ff647b2bee5, rsp=000000b42e0ff0c0, rbp=000000b42e0ff229,
r8=0000000000000001, r9=0000000000000000, r10=0000000000000000,
r11=0000000000000064, r12=000000000035b9d6, r13=0000023c96036720,
r14=0000000000000000, r15=0000023d97934b10
Factorio crashed. Generating symbolized stacktrace, please wait ...
c:\cygwin64\tmp\factorio-vechcs\libraries\stackwalker\stackwalker.cpp (906): StackWalker::ShowCallstack
c:\cygwin64\tmp\factorio-vechcs\src\util\logger.cpp (328): Logger::writeStacktrace
c:\cygwin64\tmp\factorio-vechcs\src\util\logger.cpp (382): Logger::logStacktrace
c:\cygwin64\tmp\factorio-vechcs\src\util\crashhandler.cpp (84): CrashHandler::writeStackTrace
c:\cygwin64\tmp\factorio-vechcs\src\util\crashhandler.cpp (129): CrashHandler::SehHandler
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE3CF47E1E)
00007FFE3CF47E1E (KERNELBASE): (filename not available): UnhandledExceptionFilter
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE4070D998)
00007FFE4070D998 (ntdll): (filename not available): memset
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE406F5B26)
00007FFE406F5B26 (ntdll): (filename not available): _C_specific_handler
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE40709AFD)
00007FFE40709AFD (ntdll): (filename not available): _chkstk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE40694FE9)
00007FFE40694FE9 (ntdll): (filename not available): RtlImageNtHeaderEx
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE40708C0A)
00007FFE40708C0A (ntdll): (filename not available): KiUserExceptionDispatcher
c:\cygwin64\tmp\factorio-vechcs\src\technology\researchmanager.cpp (160): ResearchManager::onResearchProgressChanged
c:\cygwin64\tmp\factorio-vechcs\src\entity\lab.cpp (224): Lab::update
c:\cygwin64\tmp\factorio-vechcs\src\surface\chunk.cpp (479): Chunk::update
c:\cygwin64\tmp\factorio-vechcs\src\surface\surface.cpp (911): Surface::update
c:\cygwin64\tmp\factorio-vechcs\src\map\map.cpp (1097): Map::update
c:\cygwin64\tmp\factorio-vechcs\src\game.cpp (141): Game::update
c:\cygwin64\tmp\factorio-vechcs\src\scenario\scenario.cpp (776): Scenario::update
c:\cygwin64\tmp\factorio-vechcs\src\mainloop.cpp (337): MainLoop::gameUpdateStep
c:\cygwin64\tmp\factorio-vechcs\src\mainloop.cpp (473): MainLoop::updateLoop
c:\program files (x86)\microsoft visual studio 14.0\vc\include\functional (214): std::_Func_impl<std::_Binder<std::_Unforced,void (__cdecl&)(ThreadBarrier * __ptr64,boost::chrono::time_point<boost::chrono::steady_clock,boost::chrono::duration<__int64,boost::ratio<1,1000000000> > > * __ptr64,boost::chrono::time_point<boost::chrono::steady_clock,boost::chrono::duration<__int64,boost::ratio<1,1000000000> > > * __ptr64,bool * __ptr64,bool,enum MainLoop::HeavyMode),ThreadBarrier * __ptr64,boost::chrono::time_point<boost::chrono::steady_clock,boost::chrono::duration<__int64,boost::ratio<1,1000000000> > > * __ptr64,boost::chrono::time_point<boost::chrono::steady_clock,boost::chrono::duration<__int64,boost::ratio<1,1000000000> > > * __ptr64,bool * __ptr64,bool & __ptr64,enum MainLoop::HeavyMode & __ptr64>,std::allocator<int>,void>::_Do_call
c:\cygwin64\tmp\factorio-vechcs\src\util\thread.cpp (34): Thread::loop
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FF648298BD3)
00007FF648298BD3 (Factorio): (filename not available): boost::thread::start_thread_noexcept
d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp (115): thread_start<unsigned int (__cdecl*)(void * __ptr64)>
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE40488102)
00007FFE40488102 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFE406BC5B4)
00007FFE406BC5B4 (ntdll): (filename not available): RtlUserThreadStart
82.143 Error CrashHandler.cpp:85: Map tick at moment of crash: 3520982
82.143 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.
Greetings steinio