Build: map-64.f18 and map-32.f18 run the same sub-make twice under -j, and it races itself #185

Open
opened 2026-11-12 11:21:41 +00:00 by rajames · 0 comments
Owner

Found

Build run 255 (1f94a048), job Image RASPI, failed: /workspace/rajames/LithosAnanke/v4/build/mkmap-32: Permission denied, make[1]: *** [kernel/Makefile:917: capsules/v4/sys/map-64.f18] Error 2. PC and MILKV in the same run, and RASPI in run 253, built.

kernel/Makefile:916-917:

$(CAPSULES_DIR)/v4/sys/map-64.f18 $(CAPSULES_DIR)/v4/sys/map-32.f18: FORCE
	@$(MAKE) --no-print-directory -C v4 CC=cc sysmap

A rule with two targets is, in GNU make, two independent rules sharing a recipe. Under -j both run at once: two make -C v4 sysmap build the same v4/build/mkmap-32 and mkmap-64 side by side, and one executes the binary while the other is still linking it. Intermittent, by timing; acceptance can pass on a tree where a board image fails.

Done when

  • The recipe runs once per build: a grouped target (&:, GNU make 4.3+) or one stamp target the two files depend on
  • Seen to fail first: make -j on the two targets, repeated, shows the race; after, it does not

🤖 Filed with Claude Code -- found checking PR 164's Build runs (Captain Bob, 2026-11-12: "File the race issue").

### Found Build run 255 (`1f94a048`), job **Image RASPI**, failed: `/workspace/rajames/LithosAnanke/v4/build/mkmap-32: Permission denied`, `make[1]: *** [kernel/Makefile:917: capsules/v4/sys/map-64.f18] Error 2`. PC and MILKV in the same run, and RASPI in run 253, built. `kernel/Makefile:916-917`: ```make $(CAPSULES_DIR)/v4/sys/map-64.f18 $(CAPSULES_DIR)/v4/sys/map-32.f18: FORCE @$(MAKE) --no-print-directory -C v4 CC=cc sysmap ``` A rule with two targets is, in GNU make, two independent rules sharing a recipe. Under `-j` both run at once: two `make -C v4 sysmap` build the same `v4/build/mkmap-32` and `mkmap-64` side by side, and one executes the binary while the other is still linking it. Intermittent, by timing; acceptance can pass on a tree where a board image fails. ### Done when - [ ] The recipe runs once per build: a grouped target (`&:`, GNU make 4.3+) or one stamp target the two files depend on - [ ] Seen to fail first: `make -j` on the two targets, repeated, shows the race; after, it does not 🤖 Filed with [Claude Code](https://claude.com/claude-code) -- found checking PR 164's Build runs (Captain Bob, 2026-11-12: "File the race issue").
rajames added the
priority
should
status
backlog
kind
bug
area/kernel
labels 2026-11-12 11:21:41 +00:00
rajames added this to the v4.0.0-alpha.5: SDK milestone 2026-11-12 11:43:40 +00:00
Sign in to join this conversation.