View Issue Details

IDProjectCategoryView StatusLast Update
0006003Spring engineGeneralpublic2018-06-27 18:31
ReporterDoo Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionnot fixable 
Product Version104.0 +git 
Summary0006003: Crash on game load when using AdjustHeightMap() func on whole map at Initialize with spring 104.0.1 - 557 and BA:tes 9716-f3f174
DescriptionGame crashed for multiple players when using the map_waterlevel modoption of BA test 9716-f3f174a
Game crashed on load screen, "Access violation" error msg.
Didn't crash when map_waterlevel = 0 (no heightmap change on Initialize()).
TagsNo tags attached.
Attached Files
infolog.txt (Attachment missing)
infolog-2.txt (Attachment missing)
Checked infolog.txt for Errors

Activities

Doo

2018-06-11 22:18

reporter   ~0019210

I should add that it was tested twice with the modoption and resulted in a crash (on two different maps)
And 3 times without the modoption on 2 different maps, including the ones that previously crashed, without a single crash

Kloot

2018-06-12 19:28

developer   ~0019212

I locally hacked the BA waterlevel gadget in 10.08 such that it always runs (replaced "if Spring.GetModOptions()..." by "if true" etc) but could not trigger a crash on Tau10 or any other map, stacktrace from infolog2 is also inconclusive.

Is there anything special about 9716-f3f174a?

Doo

2018-06-13 10:50

reporter   ~0019213

Three things changed for this gadget since 10.08:
- Map_waterlevel = the amount of height change instead of a % of maxHeight value. But the way it works is the same (get value, Adjust whole map with value)
- Gadget uses Spring.SetMapRenderingParams({ voidWater = false}) when map_waterlevel ~= 0
- Feature erasure happens on GamePreload() rather than Initialize() and the layer of the gadget is higher so that it also takes into account features placed by Lua.
I labelled it as an AdjustHeightMap issue but that was a mistake from me, it could actually be feature erasure or voidWater = false causing these crashes.

It happened more recently on Obsidian, a player couldn't join the game because he was crashing on loadscreen. All other players had loaded fine and were ingame. Is there a chance using Spring.SetMapRenderingParams({ voidWater = false}) to force voidWater off when flooded can be unsafe and needs to be done in unsynced rather than synced gadget?

Kloot

2018-06-13 13:37

developer   ~0019214

"Spring.SetMapRenderingParams({ voidWater = false})"


Based on the stacktrace which references GroundDrawer and reported GPU ("Intel(R) HD Graphics 4000") this call is responsible, but 9716-f3f174a with the same "if true" hack as 10.08 works fine for me.

A driver update may or may not help, calling SetMapRenderingParams from unsynced should not make a difference.

Issue History

Date Modified Username Field Change
2018-06-11 22:14 Doo New Issue
2018-06-11 22:14 Doo File Added: infolog.txt
2018-06-11 22:14 Doo File Added: infolog-2.txt
2018-06-11 22:18 Doo Note Added: 0019210
2018-06-12 19:28 Kloot Note Added: 0019212
2018-06-12 19:29 Kloot Status new => feedback
2018-06-13 10:50 Doo Note Added: 0019213
2018-06-13 10:50 Doo Status feedback => new
2018-06-13 13:37 Kloot Note Added: 0019214
2018-06-13 13:38 Kloot Status new => feedback
2018-06-27 18:31 Kloot Status feedback => closed
2018-06-27 18:31 Kloot Resolution open => not fixable