Hello everyone!
I recently started playing around with the new async/await features and wanted to implement a simple channel using the crossbeam channel and the new futures. The crossbeam channel itself isn't futures-aware, neither 0.1 futures nor the new ones, and therefore, I added another internal channel that sends wakers to the sender and when a new value is sent, the sender will wake all enqueued tasks.
My code is found in this repo: https://github.com/Janonard/rust-noopwake-bug
I expect the program to print 42 and then finish, which is often the case, but not always: Sometimes, I get an error saying thread 'tokio-runtime-worker-2' panicked at 'NoopWake cannot wake' (backtrace found here) and sometimes a simple thread 'tokio-runtime-worker-2' panicked at 'called 'Result::unwrap()' on an 'Err' value: ()' (backtrace found here). Also, after panicing, the program hangs.
Is this a bug within rust, tokio or crossbeam or have I simply made something wrong?
Meta
rustc --version --verbose:
rustc 1.33.0-nightly (09d6ab90e 2018-12-20)
binary: rustc
commit-hash: 09d6ab90e556bf692ff3f8790d97b3ca4fee94b0
commit-date: 2018-12-20
host: x86_64-unknown-linux-gnu
release: 1.33.0-nightly
LLVM version: 8.0
Hello everyone!
I recently started playing around with the new async/await features and wanted to implement a simple channel using the crossbeam channel and the new futures. The crossbeam channel itself isn't futures-aware, neither 0.1 futures nor the new ones, and therefore, I added another internal channel that sends wakers to the sender and when a new value is sent, the sender will wake all enqueued tasks.
My code is found in this repo: https://github.com/Janonard/rust-noopwake-bug
I expect the program to print
42and then finish, which is often the case, but not always: Sometimes, I get an error sayingthread 'tokio-runtime-worker-2' panicked at 'NoopWake cannot wake'(backtrace found here) and sometimes a simplethread 'tokio-runtime-worker-2' panicked at 'called 'Result::unwrap()' on an 'Err' value: ()'(backtrace found here). Also, after panicing, the program hangs.Is this a bug within rust, tokio or crossbeam or have I simply made something wrong?
Meta
rustc --version --verbose: