You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Objective
- Example in error B0003 is not failing anymore after #9822
## Solution
- Update the example code so that is always fail
- Also update logs and instructions on how to debug as it's easier now
---------
Co-authored-by: Alice Cecile <[email protected]>
This will panic, as system `use_entity` is executed after system `despawning`. Without the system ordering specified here, the ordering would be random and this code would panic half the time.
41
+
This will panic, as the system that is executed first will despawn the entity used by the second.
45
42
46
-
The default panic message is telling you the entity id (`1v0`) and the command that failed (adding a component `Hello`):
43
+
The default panic message is telling you which entity doesn't exist (`2v0` in the example log just below), the command that failed (adding a component `Hello`) and the system from which it originated (`use_1_and_despawn_0`):
47
44
48
45
```text
49
-
thread 'main' panicked at 'error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 1v0 because it doesn't exist in this World.', /bevy/crates/bevy_ecs/src/system/commands/mod.rs:934:13
46
+
thread 'main' panicked at /bevy/crates/bevy_ecs/src/system/commands/mod.rs:1097:13:
47
+
error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 2v0 because it doesn't exist in this World.
48
+
Encountered a panic when applying buffers for system `use_entity_after_despawn::use_1_and_despawn_0`!
49
+
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!
50
50
```
51
51
52
-
But you don't know which system tried to add a component, and which system despawned the entity.
53
-
54
-
To get the system that created the command that panics, you can enable the `trace` feature of Bevy. This will add a panic handler that will print more information:
with name="bevy_app::main_schedule::Main::run_main"
65
-
at crates/bevy_ecs/src/schedule/executor/single_threaded.rs:98
66
-
3: bevy_ecs::world::schedule
67
-
with name=Main
68
-
at crates/bevy_ecs/src/world/mod.rs:1755
69
-
4: bevy_app::app::main app
70
-
at crates/bevy_app/src/app.rs:249
71
-
5: bevy_app::app::update
72
-
at crates/bevy_app/src/app.rs:246
73
-
6: bevy_winit::winit event_handler
74
-
at crates/bevy_winit/src/lib.rs:338
75
-
7: bevy_app::app::bevy_app
76
-
at crates/bevy_app/src/app.rs:290
77
-
thread 'main' panicked at 'error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 1v0 because it doesn't exist in this World.', /bevy/crates/bevy_ecs/src/system/commands/mod.rs:934:13
78
-
```
79
-
80
-
From the first two lines, you now know that it panics while executing a command from the system `use_entity`.
81
-
82
-
To get the system that created the despawn command, you can enable DEBUG logs for crate `bevy_ecs`, for example by setting the environment variable `RUST_LOG=bevy_ecs=debug`. This will log:
52
+
To get the system that created the despawn command, you can enable DEBUG logs for crate `bevy_ecs`, for example by setting the environment variable `RUST_LOG=bevy_ecs=debug` or by configuring the `LogPlugin`. This will log:
thread 'main' panicked at 'error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 1v0 because it doesn't exist in this World.', /bevy/crates/bevy_ecs/src/system/commands/mod.rs:934:13
thread 'main' panicked at /bevy/crates/bevy_ecs/src/system/commands/mod.rs:1097:13:
57
+
error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 2v0 because it doesn't exist in this World.
58
+
Encountered a panic when applying buffers for system `use_entity_after_despawn::use_1_and_despawn_0`!
59
+
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!
87
60
```
88
61
89
-
From the first line, you know the entity `1v0` was despawned when executing a command from system `despawning`. In a real case, you could have many log lines, you will need to search for the exact entity from the panic message.
90
-
91
-
Combining those two, you should get enough information to understand why this panic is happening and how to fix it:
with name="bevy_app::main_schedule::Main::run_main"
103
-
at crates/bevy_ecs/src/schedule/executor/single_threaded.rs:98
104
-
3: bevy_ecs::world::schedule
105
-
with name=Main
106
-
at crates/bevy_ecs/src/world/mod.rs:1755
107
-
thread 'main' panicked at 'error[B0003]: Could not insert a bundle (of type `use_entity_after_despawn::Hello`) for entity 1v0 because it doesn't exist in this World.', /bevy/crates/bevy_ecs/src/system/commands/mod.rs:934:13
108
-
```
62
+
From the first line, you know the entity `2v0` was despawned when executing a command from system `use_0_and_despawn_1`. In a real case, you could have many log lines, you will need to search for the exact entity from the panic message.
0 commit comments