remix-run/remix · error · CliError
RMX_ROUTE_MAP_LOADER_SIGNAL
RMX_ROUTE_MAP_LOADER_SIGNAL
Error message
Route-map loader exited from signal ${signal}. What it means
loadRawRouteMap spawns a child process to load the route map; if that child exits because it received a signal (e.g. SIGKILL, SIGTERM) rather than exiting normally, this error is thrown with the signal name.
Source
Thrown at packages/cli/src/lib/route-map.ts:122
child.stdout.on('data', (chunk: string) => {
stdout += chunk
})
child.stderr.on('data', (chunk: string) => {
stderr += chunk
})
let exitResult = await new Promise<{ code: number | null; signal: NodeJS.Signals | null }>(
(resolve, reject) => {
child.once('error', reject)
child.once('close', (code, signal) => {
resolve({ code, signal })
})
},
)
if (exitResult.signal != null) {
throw routeMapLoaderSignal(exitResult.signal)
}
if (exitResult.code !== 0) {
let message = stderr.trim()
if (message.length === 0) {
message = 'Route-map loader failed.'
}
throw routeMapLoaderFailed(message)
}
let parsed: unknown
try {
parsed = JSON.parse(stdout)
} catch {
throw routeMapLoaderInvalidJson()
}
View on GitHub (pinned to 9696913134)
Solutions
- Re-run the command to rule out a transient kill
- Check memory limits (dmesg / CI logs) for OOM kills and raise limits if needed
- Disable or raise test/CI timeouts that kill child processes
- Ensure no wrapper script is forwarding signals to the CLI's children
Defensive patterns
Strategy: retry
Try / catch
catch (error) {
if (error instanceof Error && error.code === 'RMX_ROUTE_MAP_LOADER_SIGNAL') {
// transient (OOM/timeout): retry once with backoff
}
throw error
} Prevention
- Give CI containers enough memory for the route-map loader
- Avoid process-tree-killing timeouts around route-map commands
When it happens
Trigger: The route-map loader subprocess being killed by a signal: OOM killer (SIGKILL), user Ctrl-C propagation, test-runner timeouts killing children, or process-tree cleanup in CI.
Common situations: Memory-constrained CI containers where the loader is OOM-killed; tooling that sends SIGTERM to the whole process tree on timeout.
Related errors
- RMX_ROUTE_MAP_LOADER_FAILED
- RMX_ROUTE_MAP_LOADER_INVALID_JSON
- hmr must be provided
- hmr requires watch mode
- Missing app/routes.ts path.
AI-assisted analysis of remix-run/remix@9696913134 (2026-08-27).
Data as JSON: /api/errors/c1f74599980299f5.
Report an issue: GitHub.