Skip to content

Panic in page_size if platform of docker base image does not match #1465

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ghost opened this issue May 21, 2025 · 4 comments
Open

Panic in page_size if platform of docker base image does not match #1465

ghost opened this issue May 21, 2025 · 4 comments

Comments

@ghost
Copy link

ghost commented May 21, 2025

Hello rustix Team,

I create this issue as a result of hunting down a panic in wasmtime bytecodealliance/wasmtime#10802. Now that I have a minimal reproducing example, I wonder if this even should be supported, yet I leave that judgement to you.

This is the panic we see:

thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.0.7/src/backend/linux_raw/param/auxv.rs:302:68:
called `Option::unwrap()` on a `None` value

As suggested by @alexcrichton the reproducing code is simple:

use rustix;

fn main() {
    let page_size = rustix::param::page_size();
    eprintln!("{page_size}");
}

The environment to reproduce it, uses this container file:

FROM --platform=linux/amd64 ubuntu:24.04

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y pkg-config libssl-dev curl build-essential && \
    rm -rf /var/lib/apt/lists/*

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init && \
    sh rustup-init -y --profile minimal

ENV PATH="/root/.cargo/bin:${PATH}"

WORKDIR /usr/local/src

ENV CARGO_INCREMENTAL=0

WORKDIR /build

# Build application
COPY . .
RUN cargo build --release
CMD ["cargo", "run", "--release"]

On my ARM Mac Book Pro M3 executing:

podman build . --tag mre --platform linux/arm64
podman run mre

Reproduces the above error.


The actual production code hit by this, did not actually specify a platform in the containerfile though. It simply used a base image build on an x86_64 platform

Not sure if this is an issue with rustix, or Rossetta or if this is supposed to work at all. Yet I thought you folks may be interessted.

Best, Markus

@jneuff
Copy link

jneuff commented May 22, 2025

Hi,

I could reproduce this without the --platform linux/arm64 flag on the build command. It seems the --platform parameter of the FROM instruction is the one being used for the build anyway.

@sunfishcode
Copy link
Member

Interesting. Would anyone who can reproduce this be able to test with this patch?

For example, add this to your Cargo.toml:

[patch.crates-io]
rustix = { git = "https://github.com/bytecodealliance/rustix", rev = "06125d4cd41d0484d19f71a15d55e7d8cb2194e4" }

@ghost
Copy link
Author

ghost commented May 26, 2025

@sunfishcode I can report that the behaviour (panic because of Option::unwrap) remains, even with the patch.

@pacman82
Copy link

Unified my GitHub accounts. I am the ghost above.

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

No branches or pull requests

3 participants