Closed
Description
When messing around with Bevy I tried to run the breakout example on a single core. In debug mode this crashes with an subtraction overflow.
Specifically:
$ RUST_BACKTRACE=full taskset --cpu-list 1 cargo run --example breakout
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/examples/breakout`
thread 'main' panicked at 'attempt to subtract with overflow', crates/bevy_app/src/task_pool_options.rs:122:13
stack backtrace:
0: 0x564228b6d1d5 - backtrace::backtrace::libunwind::trace::h14d338b30b3ea0a7
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
1: 0x564228b6d1d5 - backtrace::backtrace::trace_unsynchronized::h73ea91d74a3fd67f
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
2: 0x564228b6d1d5 - std::sys_common::backtrace::_print_fmt::hd42948c952866e12
at src/libstd/sys_common/backtrace.rs:78
3: 0x564228b6d1d5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::ha8f928866ff7571e
at src/libstd/sys_common/backtrace.rs:59
4: 0x564228b992dc - core::fmt::write::he0c1e5f7426d2718
at src/libcore/fmt/mod.rs:1076
5: 0x564228b69382 - std::io::Write::write_fmt::hf3afc6cfd57d0033
at src/libstd/io/mod.rs:1537
6: 0x564228b6fe70 - std::sys_common::backtrace::_print::hfc0110703f3696fd
at src/libstd/sys_common/backtrace.rs:62
7: 0x564228b6fe70 - std::sys_common::backtrace::print::h3f77c6990ddfaa22
at src/libstd/sys_common/backtrace.rs:49
8: 0x564228b6fe70 - std::panicking::default_hook::{{closure}}::heae49580a8d62d75
at src/libstd/panicking.rs:198
9: 0x564228b6fbbc - std::panicking::default_hook::hecc34e3f729e213c
at src/libstd/panicking.rs:217
10: 0x564228b704b3 - std::panicking::rust_panic_with_hook::he82f5d0644692441
at src/libstd/panicking.rs:526
11: 0x564228b700ab - rust_begin_unwind
at src/libstd/panicking.rs:437
12: 0x564228b96f61 - core::panicking::panic_fmt::h09c929f06bb87c98
at src/libcore/panicking.rs:85
13: 0x564228b96ead - core::panicking::panic::h7ece43057e5422d4
at src/libcore/panicking.rs:50
14: 0x564228a2a8b0 - bevy_app::task_pool_options::DefaultTaskPoolOptions::create_default_pools::habcc68afd5fb0990
at crates/bevy_app/src/task_pool_options.rs:122
15: 0x564228a0dc61 - bevy_app::app::App::run::h6e074714d77a3dba
at crates/bevy_app/src/app.rs:67
16: 0x564228a22b65 - bevy_app::app_builder::AppBuilder::run::h67c1d0cf83da2c83
at crates/bevy_app/src/app_builder.rs:43
17: 0x564227702255 - breakout::main::h414756007391d499
at examples/game/breakout.rs:9
18: 0x56422770c6cb - std::rt::lang_start::{{closure}}::h89900d1c279f354c
at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/rt.rs:67
19: 0x564228b70883 - std::rt::lang_start_internal::{{closure}}::h5d3ea623498f5f43
at src/libstd/rt.rs:52
20: 0x564228b70883 - std::panicking::try::do_call::hac65e71be769a440
at src/libstd/panicking.rs:348
21: 0x564228b70883 - std::panicking::try::hd4706e264bcf6712
at src/libstd/panicking.rs:325
22: 0x564228b70883 - std::panic::catch_unwind::h948a0fb4a8b3ee82
at src/libstd/panic.rs:394
23: 0x564228b70883 - std::rt::lang_start_internal::h72cc068ed2d0ac53
at src/libstd/rt.rs:51
24: 0x56422770c6a7 - std::rt::lang_start::h805844f9977a4781
at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/rt.rs:67
25: 0x564227704eca - main
26: 0x7f745c198152 - __libc_start_main
27: 0x5642276f57ce - _start
28: 0x0 - <unknown>
While the crash only happens on master and not with the stable release (which makes me suspect it is related to the recent task queue replacing rayon), the example simply hangs on 2 or 3 cores as well.