Skip to content

Conversation

@iximeow
Copy link
Member

@iximeow iximeow commented Jan 21, 2026

There was a test that explicitly rejected this, but because ASpace is exclusive it's actually fine for start == end. Adjust the test to use such a one-wide address space instead; it worked fine the whole time.

This (should?) fix #1019.

@dancrossnyc theoretically from my analysis in #1019 I believe any access to a VirtIO ISR should have immediately panic'd propolis, but I know we've both seen NICs work before and after landing #998. Do the two observations of "typically working Propolis" and "lazy-static initializer const-eval' to panic()" make sense to you? In particular, does it seem possible that a guest wouldn't touch this register except in some odd circumstance? The alternative to me seems like a guest OS/driver that we missed in testing which does touch this register when others don't?

There was a test that explicitly rejected this, but because ASpace is
exclusive it's actually fine for `start == end`. Adjust the test to use
such a one-wide address space instead; it worked fine the whole time.
@iximeow iximeow added this to the 18 milestone Jan 21, 2026
@iximeow
Copy link
Member Author

iximeow commented Jan 21, 2026

I've rebuilt a propolis-server with this patch and no longer see a call_once closure in the program with the shape "panic or unwrap failed". there's a VM on dogfood that readily hits this, though I don't know much about the guest yet. I'm going to merge this and presumably we'll see that VM not die anymore; in parallel we'll figure out what the guest/driver is that we missed in testing.

@iximeow iximeow merged commit 2aa7f9d into master Jan 21, 2026
12 checks passed
@iximeow iximeow deleted the ixi/fencepost branch January 21, 2026 18:31
@citrus-it
Copy link
Contributor

does it seem possible that a guest wouldn't touch this register except in some odd circumstance?

It would only touch this register if it was using legacy fixed interrupts as opposed to MSI-X.

@iximeow
Copy link
Member Author

iximeow commented Jan 21, 2026

if it was using legacy fixed interrupts

and it turns out that an ipxe iso as one might grab from https://ipxe.org/download does this! with the patch it boots (and in my case, fails to load anything from the network), but with it reverted propolis-standalone dies quickly with

thread 'vcpu-0' panicked at lib/propolis/src/util/aspace.rs:54:9:
assertion failed: start < end
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Abort (core dumped)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ASpace asserts when covering exactly one element

3 participants