Skip to content

Breakout example crashes when limited to a single CPU #405

Closed
@gdox

Description

@gdox

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-BugAn unexpected or incorrect behaviorC-ExamplesAn addition or correction to our examplesP-CrashA sudden unexpected crash

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions