miri: Cannot run even basic Tokio programs
#[tokio::main]
async fn main() {}
fails with this error (Playground): (Updated on 2022-07-06)
error: unsupported operation: can't call foreign function: epoll_create1
--> /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.3/src/sys/unix/selector/epoll.rs:34:9
|
34 | syscall!(epoll_create1(flag)).map(|ep| Selector {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function: epoll_create1
|
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
= note: backtrace:
= note: inside `mio::sys::unix::selector::epoll::Selector::new` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.3/src/sys/unix/mod.rs:7:28
= note: inside `mio::poll::Poll::new` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.3/src/poll.rs:272:13
= note: inside `tokio::io::driver::Driver::new` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/io/driver/mod.rs:117:20
= note: inside `tokio::runtime::driver::create_io_stack` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/driver.rs:22:29
= note: inside `tokio::runtime::driver::Driver::new` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/driver.rs:170:52
= note: inside `tokio::runtime::Builder::build_threaded_runtime` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/builder.rs:753:39
= note: inside `tokio::runtime::Builder::build` at /playground/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/builder.rs:532:34
note: inside `main` at src/main.rs:1:1
--> src/main.rs:1:1
|
1 | #[tokio::main]
| ^^^^^^^^^^^^^^
= note: this error originates in the macro `syscall` (in Nightly builds, run with -Z macro-backtrace for more info)
About this issue
- Original URL
- State: open
- Created 5 years ago
- Reactions: 1
- Comments: 20 (17 by maintainers)
Commits related to this issue
- Auto merge of #2357 - DebugSteven:epoll_create1-shim, r=oli-obk implement minimal epoll_create1 shim Implements minimal shim for #602 — committed to rust-lang/miri by bors 2 years ago
- Auto merge of #2764 - DebugSteven:sleep, r=oli-obk Implement epoll_wait This PR continues working on https://github.com/rust-lang/miri/issues/602. This is an implementation for `sleep`, though admi... — committed to rust-lang/miri by bors a year ago
- Auto merge of #2764 - DebugSteven:sleep, r=oli-obk Implement epoll_wait This PR continues working on https://github.com/rust-lang/miri/issues/602. This is an implementation for `sleep`, though admi... — committed to RalfJung/rust by bors a year ago
I’d like to work on this issue.
It is currently possible to run Tokio under miri with
-Zmiri-disable-isolation. However you will need to create a runtime without IO enabled. For example, like this:Ah, I didn’t know tokio is available on the playground. I updated the OP. The failing foreign function these days is
epoll_create1. I expect this will basically require a way to talk with the host OS, I doubt we want to re-implement all these file descriptor operations.