Bugfix: Session 177 Bug 1: Why does Firecracker VM kernel panic imme...

Documentation for Sessions

🐛 Bugfix: Session 177 Bug 1: Why does Firecracker VM kernel panic imme...

Date: 2026-03-05
Time: 17:11:16 UTC
Session: gspace1-178.8
Agent: angular
Confidence: 98%
Status: ✅ Documented


📋 Decision Context

Question:

Session 177 Bug 1: Why does Firecracker VM kernel panic immediately at boot with vm-init.sh?

Task: Not specified


🎯 Decision Made

Chosen:

vm-init.sh line 18 used exec > >(tee -a LOGFILE) 2>&1 before mounting /proc. Process substitution (>(cmd)) requires /dev/fd which is a symlink to /proc/self/fd. Without /proc mounted, /dev/fd does not exist → bash exits with error → PID 1 dies → kernel panic. Fix: moved all mount commands (proc, sysfs, devtmpfs, tmpfs) BEFORE the exec line. Created /dev/fd and /dev/stdin/stdout/stderr symlinks manually since udev never runs.

Options Considered:


💭 Reasoning

Console output showed: '/usr/local/bin/vm-init.sh: line 18: /dev/fd/63: No such file or directory' followed by 'Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100'. The /dev/fd/63 is the file descriptor that bash creates for the tee subprocess via process substitution. In normal Linux, /dev/fd → /proc/self/fd is created by udev. In Firecracker microVMs with custom init (no systemd, no udev), these symlinks must be created manually. This would be wrong if: a future kernel automounts /proc before init (unlikely — that is the init's job). Early warning signal: any PID 1 script using process substitution in a microVM context.


📁 Files Involved


🔗 Related


Auto-generated by MCP Smart Consolidation