Skip to content

Panic in thread::sleep() on arm32 Debian 10 #95661

Open
@and-rewsmith

Description

@and-rewsmith

This issue reproduces consistently for multiple arm32 Debian 10 Buster devices (raspberry pi 2b). Running a docker container with ubuntu20.04 base image and calling thread::sleep() will result in the following panic:

thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
left: `1`,
right: `4`', library/std/src/sys/unix/thread.rs:217:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I tried this code (simplified):

const PROCESS_POLL_INTERVAL_SECS: Duration = Duration::from_secs(1);
thread::sleep(PROCESS_POLL_INTERVAL_SECS);

Full source code:
https://github.com/Azure/iotedge/blob/main/edge-hub/watchdog/src/child.rs#L103

I expected to see this happen: no panic, instead a proper sleep.

Instead, this happened: Attempting to sleep panicked.

Meta

Will fill in the below information in a bit.

rustc --version --verbose:

rustc 1.58.1 (db9d1b20b 2022-01-20)
binary: rustc
commit-hash: db9d1b20bba1968c1ec1fc49616d4742c1725b4b
commit-date: 2022-01-20
host: x86_64-unknown-linux-gnu
release: 1.58.1
LLVM version: 13.0.0
Backtrace

<backtrace>

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-threadArea: `std::thread`C-bugCategory: This is a bug.O-unixOperating system: Unix-likeT-libsRelevant to the library team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions