Skip to content

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

Open
@ghost

Description

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions