-
Notifications
You must be signed in to change notification settings - Fork 58
Description
A recent Omicron TUF repo (from commit 58ae0d1) can no longer be installed on london
. Instead, the mupdate process hangs at "Downloading Installinator and waiting for it to start", although the Wicket UI indicates that the installinator image is 100% downloaded:
When tailing logs from Installinator on an effected sled, we see that the Installinator binary has failed with the error "Failed building the Runtime" due to an OS "No such file or directory" error.
BRM42220062 # svcs -a | grep oxide
online 0:00:34 svc:/oxide/installinator:default
BRM42220062 # tail -F $(svcs -L installinator)
[ Dec 28 00:00:02 Enabled. ]
[ Dec 28 00:00:34 Executing start method ("ctrun -l child -o noorphan,regent /opt/oxide/installinator/installinator install --bootstrap-sled --from-ipcc --install-on-gimlet --stay-alive &"). ]
[ Dec 28 00:00:34 Method "start" exited with status 0. ]
thread 'main' panicked at installinator/src/main.rs:15:7:
Failed building the Runtime: Os { code: 2, kind: NotFound, message: "No such file or directory" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
This error is coming not from our code, but from Tokio (specifically, the #[tokio::main]
macro calling into tokio::runtime::Builder::build()
. It appears that we can no longer start a Tokio runtime in the installinator binary.
This seems to have resulted from updating to mio
v1.0.2. PR tokio-rs/mio#1826 changed illumos builds of mio
to use the eventfd
-based waker implementation, rather than the pipe-based waker. But, the installinator trampoline image does not have eventfd
1:
BRM42220062 # find /kernel /usr/kernel -name eventfd'*'
/usr/kernel/drv/amd64/eventfd
jclulow@atrium ~
$ find /kernel /usr/kernel -name eventfd'*'
/usr/kernel/drv/amd64/eventfd
/usr/kernel/drv/eventfd.conf
This does not mean that any Rust code using mio
v1.0.2+ is broken on Helios/illumos; this specifically effects the recovery/trampoline images, because they don't have eventfd
. Normal illumos should be able to run mio
v1.0.2 without encountering this problem.
Important
Critically, this means that any Omicron TUF repo built since d7d4bea is, for all intents and purposes, non-viable. You can't install it on any system. Don't try to.