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 with attempt to subtract with overflow in SAPRegion::update_after_subregion_removal() #593

Open
ppykalo opened this issue Feb 20, 2024 · 3 comments

Comments

@ppykalo
Copy link

ppykalo commented Feb 20, 2024

I am using rapier 0.18.0 through bevy_rapier2d 0.24.0 and noticed occasional attempt to subtract with overflow in update_after_subregion_removal() on subtract from self.subproper_proxy_count. I cloned rapier repo, added some debug and turns out that axis.delete_deleted_proxies_and_endpoints_after_subregion_removal() call returns 1 but self.subproper_proxy_count equals 0 so subtraction causes panic in debug build.

As quick workaround I changed the subtraction to self.subproper_proxy_count = self.subproper_proxy_count.saturating_sub(num_deleted_proxies) but it's out of my rapier knowledge to fix this properly.

I'm attaching log containing debug outputs and stack backtrace + diff with changes I made. I know how to reproduce this problem (~50% chance) with current state of my project so it's possible to provide additional logs if needed.
log.txt
diff.txt

@feroldi
Copy link

feroldi commented Mar 22, 2024

I'm having this exact problem as well.

@DiSaber
Copy link
Contributor

DiSaber commented Jun 20, 2024

I'm also having this issue but with rapier 0.19.0 and bevy_rapier3d 0.26.0. I managed to trigger the panic by manually setting the position of the transform attached to my player with the rigidbody. I still sometimes have issues reproducing it but my setup is basically an empty world where the player position and velocity are reset to Vec3::ZERO if the Y coordinate passes below -10.

Panic message for reference:

thread 'Compute Task Pool (11)' panicked at C:\Users\{username}\.cargo\registry\src\index.crates.io-6f17d22bba15001f\rapier3d-0.19.0\src\geometry\broad_phase_multi_sap\sap_region.rs:195:17:
attempt to subtract with overflow
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic in system `bevy_rapier3d::plugin::systems::step_simulation<()>`!
Encountered a panic in system `bevy_app::main_schedule::FixedMain::run_fixed_main`!
Encountered a panic in system `bevy_time::fixed::run_fixed_main_schedule`!
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!

@marcelchampagne
Copy link

@DiSaber looks like you are also running Rapier in FixedTimestep. I believe I only started getting this after switching. My guess is that something unexpected is happening when Rapier runs twice on one frame during FixedTimestep.

FYI @sebcrozet, since I know you mentioned you wanted to investigate in the workaround PR. Maybe that fact that this only happens in FixedTimestep can lead you towards a proper fix?

rapier3d-0.18.0\src\geometry\broad_phase_multi_sap\sap_region.rs:190:17:
attempt to subtract with overflow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants