fix(loader-server): the worker fails to start with E2BIG when the game has about 1,500 files or more
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 73/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- bun, typescript
- Bereich
- backend
Rechercherichtung
Start with apps/server/src/server.ts lines 49–53 and apps/server/src/worker.ts line 8 to trace how the file map reaches the worker. Compare the proposed IPC and temporary JSON file approaches, then check the worker startup and watch mode paths. Done means the server starts with around 1,500 files or more, including in watch mode, without an E2BIG error.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Which app is this bug report for?
server
Issue description
The server loader passes the whole file map to the worker as one argv string (server.ts#L49-L53, read in worker.ts#L8). On Linux, a single argument is limited to 128 KiB (MAX_ARG_STRLEN). With ordinary paths, the limit is reached at roughly 1,200 to 1,500 files: fork throws and the game server never starts. In watch mode the throw happens inside the watcher callback, as an unhandled rejection.
Reproduced with fork under Bun 1.3.14, using paths shaped like the loader's [virtualPath, absolutePath] pairs:
1000 files 108781 chars exit 0
1500 files 164281 chars THROW E2BIG: argument list too long, posix_spawn '…/bun'
Expected: the server starts whatever the number of files.
Suggested fix: send the paths over the IPC channel (child.send) or a temp JSON file instead of argv, and have the worker read them before calling main.
Found during a read-only audit of main @ 044c766 (2026-11-11).
Code sample
child = fork(
join(dirname(__filename), "worker.js"),
[mainPath as string, JSON.stringify(paths)], // one argv entry, grows with the file count
{ env: ... },
);
Versions
- @nanoforge-dev/loader-client / @nanoforge-dev/loader-server / @nanoforge-dev/loader-website 1.7.0 (
main@ 044c766) - Bun 1.3.14
- Linux x86_64
Issue priority
High (immediate attention needed)
I have tested this issue on a development release
044c766
- Vorherrschende Sprache
- TypeScript
- Sterne
- 1
- Forks
- 0
- Ø Merge
- 17 Std. 25 Min.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NanoForge-dev/Loader
-
app:client app:website enhancement refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
NanoForge-dev/Loader#145 ·
Maintainer antworten meist innerhalb von 1 Tag
-
chore(loader-client,loader-server): package.json entry points name files the build does not produceOffenapp:client app:server bug chore good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NanoForge-dev/Loader#144 ·
Maintainer antworten meist innerhalb von 1 Tag
-
app:website bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
NanoForge-dev/Loader#141 ·
Maintainer antworten meist innerhalb von 1 Tag
-
app:website bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
NanoForge-dev/Loader#140 ·
Maintainer antworten meist innerhalb von 1 Tag
-
app:server bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
NanoForge-dev/Loader#138 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in NanoForge-dev/Loader
Ähnliche Issues
-
Mend: dependency security vulnerability
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 65/100
fdm-monster/fdm-monster#5563 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
Maintainer antworten meist innerhalb von 1 Tag
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
growilabs/growi#12246 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
SSWConsulting/SSW.Rules#2809 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag