Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions