fix(egg): the launcher drops Carbon's preloader for itself, not just the sidecar #17
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/launcher-carbon-preload"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on phase 18 walk step 6: the first Carbon server built from the imported
runicgateway-rust-autowipeegg. The Oxide server built from the same egg was correct.The defect
On Carbon, the console showed the sidecar's whole
--print-configJSON, token included and unframed, followed by:The once-only token banner never appeared. The plugin still connected.
Carbon's entrypoint puts
LD_PRELOAD=libdoorstop.soin front of the whole startup string. With Carbon'sDOORSTOP_*environment set, that preloader breaks the launcher shell's own$(…): the child's output goes to the console and the capture comes back empty.env -u LD_PRELOADon the sidecar wasn't enough, because the shell doing the capturing has the preload as well. I reproduced it in isolation:The fix
The launcher re-execs itself once without
LD_PRELOAD, keeps the value aside, and gives it back to the game inrun_game. The game is the only process that needs it.Proof
environment.shandlibdoorstop.so, with a stub sidecar: the released v0.1.2 launcher reproduces the egg-carbon output exactly. This one prints the framed banner andserver id 'egg-carbon', sidecar URL http://192.168.0.12:21019, and the game still receivesLD_PRELOADandDOORSTOP_ENABLED=1.ghcr.io/pterodactyl/games:rust(first boot, edited variable, Carbon config, installer config) are unchanged.Merging releases v0.1.3. The launcher ships in the release, so the egg needs no re-import; a reinstall fetches it (§34.2.6).
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY