tl;dr if you do something horrible to your Fly Machine and it has a kernel panic, we now treat this as failure instead of success.
A Fly Machine is a micro-VM with its own kernel. From outside the machine we don’t have visibility into the exit code of the main process inside, so we rely on the init process inside to report the exit code that it saw. We use this exit code to determine if we should restart the machine based on the machine’s restart policy.
If the init process doesn’t report the exit code for your process out to our supervisor, we were previously handling this as “no news is good news” and assuming your process exited successfully (the same as exit 0).
Now, if we don’t receive an exit code report from init for any reason (kernel panic or otherwise), we treat this the same as a main process crash. If your machine has the on-failure restart policy we’ll automatically restart it.
Why? Because a kernel panic definitely isn’t a successful exit, and you probably want us to restart your machine instead of just leaving it dead.