Page 1 of 1

[1.0.0] Error during data stage, really long table passed to data:extend

Posted: Thu Oct 15, 2020 4:30 pm
by Honktown
Apologies in advance if this was already reported/fixed (reporting for someone else).

They were running code which was basically:
local new_items = {}

for _, item in pairs(data.raw.item) do
local newitem = table.deepcopy(item)
newitem.name = prefix..newitem.name
table.insert(new_items, newitem)
end

data:extend(new_items)

except they did the data:extend call wrong (e.g. tried {new_items}, as they are inexperienced and trying to learn things).

First error is okay, but it causes a game error:

Code: Select all

   2.206 Error ModManager.cpp:1514: Failed to load mod "name": __name__/data.lua:1: __core__/lualib/dataloader.lua:18: Missing type in the following prototype definition {...very long table...}
   
   stack traceback, disabling mod
   
   Factorio crashed. Generating symbolized stacktrace, please wait ...
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\imagedraworder.cpp (60): ImageDrawOrder::ImageDrawOrder
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\drawqueue.cpp (117): addImageDrawOrder
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\drawqueue.cpp (1488): DrawQueue::drawGuiSprite
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\textdrawsection.cpp (349): <lambda_3c5abba85a67a5ff8d952458d07c586f>::operator()
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\textdrawsection.cpp (389): TextDrawSection::drawSection
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\textrenderer.cpp (1140): TextRenderer::drawTextLines
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\guigraphics.cpp (264): GuiGraphics::drawTextLines
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\resizabletext.cpp (75): agui::ResizableText::drawTextArea
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\label.cpp (179): agui::Label::drawText
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (148): agui::Widget::paint
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1292): agui::Widget::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\layout.cpp (83): agui::Layout::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\scrollpane.cpp (676): agui::ScrollPane::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\layout.cpp (83): agui::Layout::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\frame.cpp (104): agui::Frame::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1300): agui::Widget::recursivePaintChildrenInternal
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\widget\widget.cpp (1278): agui::Widget::recursivePaintChildren
c:\cygwin64\tmp\factorio-build-jhy8mv\libraries\agui\gui.cpp (843): agui::Gui::render
c:\cygwin64\tmp\factorio-build-jhy8mv\src\graphics\guirenderer.cpp (79): GuiRenderer::prepare
c:\cygwin64\tmp\factorio-build-jhy8mv\src\mainloop.cpp (974): MainLoop::prepare
c:\cygwin64\tmp\factorio-build-jhy8mv\src\mainloop.cpp (634): MainLoop::mainLoopStep
c:\cygwin64\tmp\factorio-build-jhy8mv\src\mainloop.cpp (379): MainLoop::run
c:\cygwin64\tmp\factorio-build-jhy8mv\src\main.cpp (1123): wmain
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (288): __scrt_common_main_seh
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFA8CF37BD4)
00007FFA8CF37BD4 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFA8F18CE51)
00007FFA8F18CE51 (ntdll): (filename not available): RtlUserThreadStart
Stack trace logging done
  11.015 Error ImageDrawOrder.cpp:63: Invalid sprite reference. Sprite: __core__/graphics/questionmark.png {x = 0, y = 0, w = 0, h = 0}, 0x000001f3f135d288, owner: default:utility-sprites
Logger::writeStacktrace skipped.
  11.015 Error Util.cpp:97: 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.
  51.021 Uploading log file
  51.046 Error CrashHandler.cpp:258: Heap validation: success.
  51.068 Creating crash dump.
  52.752 CrashDump success
   
I asked if they had modified any core graphics, and they said no.

Re: [1.0.0] Error during data stage, really long table passed to data:extend

Posted: Thu Oct 15, 2020 6:45 pm
by Rseding91
Do you have any way to reproduce the crash? A mod I can install that crashes on startup?

Re: [1.0.0] Error during data stage, really long table passed to data:extend

Posted: Fri Oct 16, 2020 6:12 am
by Honktown
Here is a mod for it. Reproducible with base+this on my machine (Factorio 1.0 Windows website download zip version).