I've recently encountered the same error, and it occurs when Omnimatter, Angel's Smelting, and Asphalt Roads are enabled at the same time (I disabled all other mods except those three and their dependencies, and that was the minimal set for Factorio to fail to load on the "processed-omnicium" recipe. I tracked it down to global namespace contamination, specifically func.createTileSetB in prototypes/tile_n2.lua sets a global variable called "ic" and ItemGen::addSmallIcon from the prototypes/recipe-generation.lua in Omnilib (a dependency of Omnimatter, and a function that gets called when the Omnimatter recipes like processed-omnicium are created) uses "ic" as a for loop variable in one branch. I'm not exactly sure how/why only processed-omnicium is getting corrupted with Asphalt Roads data, but commenting out 'require("prototypes.tile_n2")' in Asphalt Road's data.lua or applying the patch below cause the error to go away and Factorio to load properly. I also have a more extensive patch that tries to make all assigned variables in Asphalt Roads (basically everything not declared in a "for" loop or config.lua)
diff -rudpw --strip-trailing-cr AsphaltRoads_1.1.3.old/prototypes/tile_n2.lua AsphaltRoads_1.1.3/prototypes/tile_n2.lua
--- AsphaltRoads_1.1.3.old/prototypes/tile_n2.lua 2018-01-10 02:49:56.000000000 -0800
+++ AsphaltRoads_1.1.3/prototypes/tile_n2.lua 2018-12-21 06:00:46.356265130 -0800
@@ -82,10 +82,10 @@ function func.createTileSetB(tileset, nu
-- part 1: tile definition
for k=1, numDirections do
- thisdir = dirNames[k]
- nextdir = dirNames[k+1-math.floor(k/numDirections)*k]
- ic = {} -- inner-corner parameter
- tilelayer = asphalt_base_layer
+ local thisdir = dirNames[k]
+ local nextdir = dirNames[k+1-math.floor(k/numDirections)*k]
+ local ic = {} -- inner-corner parameter
+ local tilelayer = asphalt_base_layer
if diagonalTile ~= nil and diagonalTile == true then
ic = func.diagonal_value(tileset, thisdir)
tilelayer = asphalt_priority_layer