Dwarf Fortress Bug Tracker - Dwarf Fortress |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0010624 | Dwarf Fortress | World Generation -- General | public | 2018-03-14 13:25 | 2018-08-11 04:33 |
|
Reporter | squamouss | |
Assigned To | Loci | |
Priority | normal | Severity | minor | Reproducibility | sometimes |
Status | needs feedback | Resolution | open | |
Platform | | OS | | OS Version | |
Product Version | 0.44.07 | |
Target Version | | Fixed in Version | | |
|
Summary | 0010624: Random crash at the end of worldgen |
Description | When generating a world, said world will sometimes crash right at the end of worldgen, when it reaches the last portion ("finalizing sites" I think.) Its entirely random but common enough to be irritating. |
Steps To Reproduce | Generate a world a couple of times. It'll crash if you do it enough. Maybe 100+ years increases the chance, I don't know for sure. |
Additional Information | |
Tags | No tags attached. |
Relationships | |
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
2018-03-14 13:25 | squamouss | New Issue | |
2018-03-15 10:53 | Loci | Note Added: 0037938 | |
2018-03-15 10:53 | Loci | Assigned To | => Loci |
2018-03-15 10:53 | Loci | Status | new => needs feedback |
2018-03-28 19:14 | squamouss | Note Added: 0038059 | |
2018-03-28 19:14 | squamouss | Status | needs feedback => assigned |
2018-03-29 01:16 | Shonai_Dweller | Note Added: 0038066 | |
2018-03-29 03:17 | PatrikLundell | Note Added: 0038068 | |
2018-03-29 03:20 | Shonai_Dweller | Note Added: 0038069 | |
2018-03-29 04:04 | PatrikLundell | Note Added: 0038071 | |
2018-03-29 04:09 | PatrikLundell | Note Edited: 0038071 | bug_revision_view_page.php?bugnote_id=0038071#r15473 |
2018-03-30 10:04 | Loci | Note Added: 0038086 | |
2018-03-30 10:04 | Loci | Status | assigned => needs feedback |
2018-03-30 10:06 | Loci | Note Edited: 0038086 | bug_revision_view_page.php?bugnote_id=0038086#r15483 |
2018-08-11 04:33 | TomiTapio2 | Note Added: 0038713 | |
2018-08-11 07:57 | TomiTapio2 | Note Edited: 0038713 | bug_revision_view_page.php?bugnote_id=0038713#r15744 |
Notes |
|
(0037938)
|
Loci
|
2018-03-15 10:53
|
|
Can you provide settings and a seed which crash repeatably? |
|
|
|
I cannot do that. It is just something that happens at random at the very end of worldgen, the 'finalizing sites' stage. Multiple other people seem to have this problem at well. And of course since crashing before finalizing the world does not leave a save file I have nothing to submit. |
|
|
|
You could try duplicating by re-genning with the seed of a world which crashes. If you can replicate it, it would probably help a lot. |
|
|
|
The problem with that is to get the seed out of a crashed world gen... You'd need to use DFHack to extract the seeds during world gen until you get one that crashes, and then retry the world gen with the extracted seeds. If that does NOT crash, it would still tell us it's not the seeds themselves that cause the issue, but something like access to memory outside of the intended data structure. |
|
|
|
Ah. Ok. I thought they were recorded somewhere like the gamelog. Never mind then. |
|
|
(0038071)
|
PatrikLundell
|
2018-03-29 04:04
(edited on: 2018-03-29 04:09) |
|
Here's a DFHack script that exports the parameters to worldgenparms.txt (assuming Mantis doesn't eat up parts of the script like the forum does unless you say you really mean that it's code):
To use it, pause world gen, run the script from the DFHack terminal, resume world gen. Repeat until world gen crashes. Once it does, paste the contents of worldgenparms.txt (found at the DF top level) into <DF>\data\init\world_gen.txt and use advanced world gen to select the profile you just pasted.
function pole_to_string (pole)
if pole == -1 then
return "NONE"
elseif pole == 0 then
return "NORTH"
elseif pole == 1 then
return "SOUTH"
else
return "NORTH_AND_SOUTH"
end
end
--=============================
function boolean_to_int (b)
if true then
return 1
else
return 0
end
end
--=============================
function worlgenparms ()
local file = io.open (dfhack.getDFPath().."/worldgenparms.txt", "w")
local param = df.global.world.worldgen.worldgen_parms
file:write ("[WORLD_GEN]\n")
file:write (" [TITLE:" .. param.title .. "]\n")
file:write (" [SEED:" .. param.seed .. "]\n")
file:write (" [HISTORY_SEED:" .. param.history_seed .. "]\n")
file:write (" [NAME_SEED:" .. param.name_seed .. "]\n")
file:write (" [CREATURE_SEED:" .. param.creature_seed .. "]\n")
file:write (" [DIM:" .. tostring (param.dim_x) .. ":" ..
tostring (param.dim_y) .. "]\n")
file:write (" [EMBARK_POINTS:" .. tostring (param.embark_points) .. "]\n")
file:write (" [END_YEAR:" .. tostring (param.end_year) .. "]\n")
file:write (" [BEAST_END_YEAR:" .. tostring (param.beast_end_year) .. ":" ..
tostring (param.beast_end_year_percent) .. "]\n")
file:write (" [REVEAL_ALL_HISTORY:" .. tostring (param.reveal_all_history) .. "]\n")
file:write (" [CULL_HISTORICAL_FIGURES:" .. tostring (param.cull_historical_figures) .. "]\n")
file:write (" [ELEVATION:" .. tostring (param.ranges [0] [df.worldgen_range_type.ELEVATION]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.ELEVATION]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.ELEVATION]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.ELEVATION]) .. "]\n")
file:write (" [RAINFALL:" .. tostring (param.ranges [0] [df.worldgen_range_type.RAINFALL]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.RAINFALL]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.RAINFALL]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.RAINFALL]) .. "]\n")
file:write (" [TEMPERATURE:" .. tostring (param.ranges [0] [df.worldgen_range_type.TEMPERATURE]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.TEMPERATURE]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.TEMPERATURE]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.TEMPERATURE]) .. "]\n")
file:write (" [DRAINAGE:" .. tostring (param.ranges [0] [df.worldgen_range_type.DRAINAGE]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.DRAINAGE]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.DRAINAGE]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.DRAINAGE]) .. "]\n")
file:write (" [VOLCANISM:" .. tostring (param.ranges [0] [df.worldgen_range_type.VOLCANISM]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.VOLCANISM]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.VOLCANISM]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.VOLCANISM]) .. "]\n")
file:write (" [SAVAGERY:" .. tostring (param.ranges [0] [df.worldgen_range_type.SAVAGERY]) .. ":" ..
tostring (param.ranges [1] [df.worldgen_range_type.SAVAGERY]) .. ":" ..
tostring (param.ranges [2] [df.worldgen_range_type.SAVAGERY]) .. ":" ..
tostring (param.ranges [3] [df.worldgen_range_type.SAVAGERY]) .. "]\n")
file:write (" [ELEVATION_FREQUENCY:" .. tostring (param.elevation_frequency [0]) .. ":" ..
tostring (param.elevation_frequency [1]) .. ":" ..
tostring (param.elevation_frequency [2]) .. ":" ..
tostring (param.elevation_frequency [3]) .. ":" ..
tostring (param.elevation_frequency [4]) .. ":" ..
tostring (param.elevation_frequency [5]) .. "]\n")
file:write (" [RAIN_FREQUENCY:" .. tostring (param.rain_frequency [0]) .. ":" ..
tostring (param.rain_frequency [1]) .. ":" ..
tostring (param.rain_frequency [2]) .. ":" ..
tostring (param.rain_frequency [3]) .. ":" ..
tostring (param.rain_frequency [4]) .. ":" ..
tostring (param.rain_frequency [5]) .. "]\n")
file:write (" [DRAINAGE_FREQUENCY:" .. tostring (param.drainage_frequency [0]) .. ":" ..
tostring (param.drainage_frequency [1]) .. ":" ..
tostring (param.drainage_frequency [2]) .. ":" ..
tostring (param.drainage_frequency [3]) .. ":" ..
tostring (param.drainage_frequency [4]) .. ":" ..
tostring (param.drainage_frequency [5]) .. "]\n")
file:write (" [TEMPERATURE_FREQUENCY:" .. tostring (param.temperature_frequency [0]) .. ":" ..
tostring (param.temperature_frequency [1]) .. ":" ..
tostring (param.temperature_frequency [2]) .. ":" ..
tostring (param.temperature_frequency [3]) .. ":" ..
tostring (param.temperature_frequency [4]) .. ":" ..
tostring (param.temperature_frequency [5]) .. "]\n")
file:write (" [SAVAGERY_FREQUENCY:" .. tostring (param.savagery_frequency [0]) .. ":" ..
tostring (param.savagery_frequency [1]) .. ":" ..
tostring (param.savagery_frequency [2]) .. ":" ..
tostring (param.savagery_frequency [3]) .. ":" ..
tostring (param.savagery_frequency [4]) .. ":" ..
tostring (param.savagery_frequency [5]) .. "]\n")
file:write (" [VOLCANISM_FREQUENCY:" .. tostring (param.volcanism_frequency [0]) .. ":" ..
tostring (param.volcanism_frequency [1]) .. ":" ..
tostring (param.volcanism_frequency [2]) .. ":" ..
tostring (param.volcanism_frequency [3]) .. ":" ..
tostring (param.volcanism_frequency [4]) .. ":" ..
tostring (param.volcanism_frequency [5]) .. "]\n")
file:write (" [POLE:" .. pole_to_string (pole) .."]\n") -- pole_map [param.pole] .."]\n")
file:write (" [MINERAL_SCARCITY:" .. tostring (param.mineral_scarcity) .. "]\n")
file:write (" [MEGABEAST_CAP:" .. tostring (param.megabeast_cap) .. "]\n")
file:write (" [SEMIMEGABEAST_CAP:" .. tostring (param.semimegabeast_cap) .. "]\n")
file:write (" [TITAN_NUMBER:" .. tostring (param.titan_number) .. "]\n")
file:write (" [TITAN_ATTACK_TRIGGER:" .. tostring (param.titan_attack_trigger [0]) .. ":" ..
tostring (param.titan_attack_trigger [1]) .. ":" ..
tostring (param.titan_attack_trigger [2]).. "]\n")
file:write (" [DEMON_NUMBER:" .. tostring (param.demon_number) .. "]\n")
file:write (" [NIGHT_TROLL_NUMBER:" .. tostring (param.night_troll_number) .. "]\n")
file:write (" [BOGEYMAN_NUMBER:" .. tostring (param.bogeyman_number) .. "]\n")
file:write (" [VAMPIRE_NUMBER:" .. tostring (param.vampire_number) .. "]\n")
file:write (" [WEREBEAST_NUMBER:" .. tostring (param.werebeast_number) .. "]\n")
file:write (" [SECRET_NUMBER:" .. tostring (param.secret_number) .. "]\n")
file:write (" [REGIONAL_INTERACTION_NUMBER:".. tostring (param.regional_interaction_number).. "]\n")
file:write (" [DISTURBANCE_INTERACTION_NUMBER:" .. tostring(param.disturbance_interaction_number) .. "]\n")
file:write (" [EVIL_CLOUD_NUMBER:" .. tostring (param.evil_cloud_number) .. "]\n")
file:write (" [EVIL_RAIN_NUMBER:" .. tostring (param.evil_rain_number) .. "]\n")
local generate_divine_materials
if not dfhack.pcall (function () generate_divine_materials = param.generate_divine_materials end) then -- Expected new name
generate_divine_materials = param.anon_1 -- Will probably be renamed soon.
end
file:write (" [GENERATE_DIVINE_MATERIALS:" .. tostring (generate_divine_materials) .. "]\n")
file:write (" [GOOD_SQ_COUNTS:" .. tostring (param.good_sq_counts_0) .. ":" ..
tostring (param.good_sq_counts_1) .. ":" ..
tostring (param.good_sq_counts_2) .. "]\n")
file:write (" [EVIL_SQ_COUNTS:" .. tostring (param.evil_sq_counts_0) .. ":" ..
tostring (param.evil_sq_counts_1) .. ":" ..
tostring (param.evil_sq_counts_2) .. "]\n")
file:write (" [PEAK_NUMBER_MIN:" .. tostring (param.peak_number_min) .. "]\n")
file:write (" [PARTIAL_OCEAN_EDGE_MIN:" .. tostring (param.partial_ocean_edge_min) .. "]\n")
file:write (" [COMPLETE_OCEAN_EDGE_MIN:" .. tostring (param.complete_ocean_edge_min) .. "]\n")
file:write (" [VOLCANO_MIN:" .. tostring (param.volcano_min) .. "]\n")
file:write (" [REGION_COUNTS:SWAMP:" .. tostring (param.region_counts [0] [df.worldgen_region_type.SWAMP]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.SWAMP]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.SWAMP]) .. "]\n")
file:write (" [REGION_COUNTS:DESERT:" .. tostring (param.region_counts [0] [df.worldgen_region_type.DESERT]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.DESERT]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.DESERT]) .. "]\n")
file:write (" [REGION_COUNTS:FOREST:" .. tostring (param.region_counts [0] [df.worldgen_region_type.FOREST]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.FOREST]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.FOREST]) .. "]\n")
file:write (" [REGION_COUNTS:MOUNTAINS:" .. tostring (param.region_counts [0] [df.worldgen_region_type.MOUNTAINS]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.MOUNTAINS]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.MOUNTAINS]) .. "]\n")
file:write (" [REGION_COUNTS:OCEAN:" .. tostring (param.region_counts [0] [df.worldgen_region_type.OCEAN]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.OCEAN]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.OCEAN]) .. "]\n")
file:write (" [REGION_COUNTS:GLACIER:" .. tostring (param.region_counts [0] [df.worldgen_region_type.GLACIER]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.GLACIER]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.GLACIER]) .. "]\n")
file:write (" [REGION_COUNTS:TUNDRA:" .. tostring (param.region_counts [0] [df.worldgen_region_type.TUNDRA]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.TUNDRA]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.TUNDRA]) .. "]\n")
file:write (" [REGION_COUNTS:GRASSLAND:" .. tostring (param.region_counts [0] [df.worldgen_region_type.GRASSLAND]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.GRASSLAND]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.GRASSLAND]) .. "]\n")
file:write (" [REGION_COUNTS:HILLS:" .. tostring (param.region_counts [0] [df.worldgen_region_type.HILLS]) .. ":" ..
tostring (param.region_counts [1] [df.worldgen_region_type.HILLS]) .. ":" ..
tostring (param.region_counts [2] [df.worldgen_region_type.HILLS]) .. "]\n")
file:write (" [EROSION_CYCLE_COUNT:" .. tostring (param.erosion_cycle_count) .. "]\n")
file:write (" [RIVER_MINS:" .. tostring (param.river_mins [0]) ..":" ..
tostring (param.river_mins [1]) .. "]\n")
file:write (" [PERIODICALLY_ERODE_EXTREMES:" .. tostring (param.periodically_erode_extremes) .. "]\n")
file:write (" [OROGRAPHIC_PRECIPITATION:" .. tostring (param.orographic_precipitation) .. "]\n")
file:write (" [SUBREGION_MAX:" .. tostring (param.subregion_max) .. "]\n")
file:write (" [CAVERN_LAYER_COUNT:" .. tostring (param.cavern_layer_count) .. "]\n")
file:write (" [CAVERN_LAYER_OPENNESS_MIN:" .. tostring (param.cavern_layer_openness_min) .. "]\n")
file:write (" [CAVERN_LAYER_OPENNESS_MAX:" .. tostring (param.cavern_layer_openness_max) .. "]\n")
file:write (" [CAVERN_LAYER_PASSAGE_DENSITY_MIN:" .. tostring (param.cavern_layer_passage_density_min) .. "]\n")
file:write (" [CAVERN_LAYER_PASSAGE_DENSITY_MAX:" .. tostring (param.cavern_layer_passage_density_max) .. "]\n")
file:write (" [CAVERN_LAYER_WATER_MIN:" .. tostring (param.cavern_layer_water_min) .. "]\n")
file:write (" [CAVERN_LAYER_WATER_MAX:" .. tostring (param.cavern_layer_water_max) .. "]\n")
file:write (" [HAVE_BOTTOM_LAYER_1:" .. tostring (boolean_to_int (param.have_bottom_layer_1)) .. "]\n")
file:write (" [HAVE_BOTTOM_LAYER_2:" .. tostring (boolean_to_int (param.have_bottom_layer_2)) .. "]\n")
file:write (" [LEVELS_ABOVE_GROUND:" .. tostring (param.levels_above_ground) .. "]\n")
file:write (" [LEVELS_ABOVE_LAYER_1:" .. tostring (param.levels_above_layer_1) .. "]\n")
file:write (" [LEVELS_ABOVE_LAYER_2:" .. tostring (param.levels_above_layer_2) .. "]\n")
file:write (" [LEVELS_ABOVE_LAYER_3:" .. tostring (param.levels_above_layer_3) .. "]\n")
file:write (" [LEVELS_ABOVE_LAYER_4:" .. tostring (param.levels_above_layer_4) .. "]\n")
file:write (" [LEVELS_ABOVE_LAYER_5:" .. tostring (param.levels_above_layer_5) .. "]\n")
file:write (" [LEVELS_AT_BOTTOM:" .. tostring (param.levels_at_bottom) .. "]\n")
file:write (" [CAVE_MIN_SIZE:" .. tostring (param.cave_min_size) .. "]\n")
file:write (" [CAVE_MAX_SIZE:" .. tostring (param.cave_max_size) .. "]\n")
file:write (" [MOUNTAIN_CAVE_MIN:" .. tostring (param.mountain_cave_min) .. "]\n")
file:write (" [NON_MOUNTAIN_CAVE_MIN:" .. tostring (param.non_mountain_cave_min) .. "]\n")
file:write (" [ALL_CAVES_VISIBLE:" .. tostring (param.all_caves_visible) .. "]\n")
file:write (" [SHOW_EMBARK_TUNNEL:" .. tostring (param.show_embark_tunnel) .. "]\n")
file:write (" [TOTAL_CIV_NUMBER:" .. tostring (param.total_civ_number) .. "]\n")
file:write (" [TOTAL_CIV_POPULATION:" .. tostring (param.total_civ_population) .. "]\n")
file:write (" [SITE_CAP:" .. tostring (param.site_cap) .. "]\n")
file:write (" [PLAYABLE_CIVILIZATION_REQUIRED:" .. tostring (param.playable_civilization_required) .. "]\n")
file:write (" [ELEVATION_RANGES:" .. tostring (param.elevation_ranges_0) .. ":" ..
tostring (param.elevation_ranges_1) .. ":" ..
tostring (param.elevation_ranges_2) .. "]\n")
file:write (" [RAIN_RANGES:" .. tostring (param.rain_ranges_0) .. ":" ..
tostring (param.rain_ranges_1) .. ":" ..
tostring (param.rain_ranges_2) .. "]\n")
file:write (" [DRAINAGE_RANGES:" .. tostring (param.drainage_ranges_0) .. ":" ..
tostring (param.drainage_ranges_1) .. ":" ..
tostring (param.drainage_ranges_2) .. "]\n")
file:write (" [SAVAGERY_RANGES:" .. tostring (param.savagery_ranges_0) .. ":" ..
tostring (param.savagery_ranges_1) .. ":" ..
tostring (param.savagery_ranges_2) .. "]\n")
file:write (" [VOLCANISM_RANGES:" .. tostring (param.volcanism_ranges_0) .. ":" ..
tostring (param.volcanism_ranges_1) .. ":" ..
tostring (param.volcanism_ranges_2) .. "]\n")
file:flush()
file:close()
end
worlgenparms ()
|
|
|
(0038086)
|
Loci
|
2018-03-30 10:04
(edited on: 2018-03-30 10:06) |
|
I'm 10/10 creating pocket worlds with short histories and no crashes, so more detail is necessary to reproduce. You can view the seeds selected for a particular world in gamelog.txt:
Generating world using parameter set CREATE WORLD NOW = 1222233
Seed: ouiKGAG8MsAiiuysIY8u
History Seed: iKciwIY4uWwMAEwQYoCM
Name Seed: SUmyw4C0iEQSIggIegga
Creature Seed: 0Q24c8a2gqgMIkYY8M2C
Combined with the world options you selected, that should allow you to re-generate the same world and see if it crashes repeatably. Even if it doesn't, posting the seeds/options which crashed would allow other people to attempt to reproduce the problem.
|
|
|
(0038713)
|
TomiTapio2
|
2018-08-11 04:33
(edited on: 2018-08-11 07:57) |
|
I have uploaded modded raws and seed, which cause worldgen crash.
http://dffd.bay12games.com/file.php?id=13946 [^]
Found my raws problem: hyena male and female castes were declared TWICE. But how does that crash worldgen finalizing sites...
|
|