Arma Reforger Tools 1.8.0.13, Linux via Proton Experimental 11.0-100, RTX 5090.
Re-importing a heightmap into a terrain that already has normal maps invalidates all of them. The
import writes Worlds/<Terrain>/reimport.lock listing every Terrain_<n>_normal.edds and defers the
regeneration to a consistency check on the next world load. On this build that check crashes
part-way through, about four seconds into the load, before anything is drawn:
12:30:55.763 TERRAIN (E): Terrain lock file found, checking terrain data consistency...
12:30:59 Access violation. Illegal read by 0x1421a0829 at 0x20000000c
Crash GUID ed8259ef-1ce3-417a-8824-5f16a94b2dae
The damage is silent and that is the important part. Measured on a 17 x 17 tile terrain after the
crash: 99 tiles had been regenerated and 190 were left carrying normals computed from the OLD
heights. The heights themselves were correct — all 289 tiles matched the new heightmap to within
0.0155 m, the 16-bit quantisation step — so nothing looks wrong until the lighting is wrong, and a
user has no reason to suspect the normals.
This is a different bug from the close-range render-path crash I filed separately: that one is
0x1421a550a reading a null (0xffffffffffffffff) after the camera approaches a surfaced terrain; this
is 0x1421a0829 reading a wild pointer (0x20000000c) during the consistency check with nothing drawn.
Steps to reproduce:
1. Build a terrain and generate its normal maps.
2. Re-import a different heightmap over it.
3. Open the world again. The consistency check starts and the session ends a few seconds later.
4. If it survives, check the tiles: expect most normal maps still computed from the old heights.
Two things that would help even if the crash is hard to fix:
- the consistency check could record which tiles it has finished, so a crash is resumable;
- a warning that a re-import invalidates every normal map would let people order the work correctly.
Workaround I am using: import the final heightmap before generating normal maps, and where a
re-import has already happened, re-run Generate normal map over the whole terrain rather than
trusting the check.
Note: the session log from 2026-09-12 has since rotated off disk, so I cannot attach it. The crash
GUID above should have the upload.