jumpy icon indicating copy to clipboard operation
jumpy copied to clipboard

Crash in gilrs when pressing dpad on DualSense controller

Open MaxCWhitehead opened this issue 1 year ago • 2 comments

Description

If I boot up jumpy and press dpad down on dual sense (ps5) controller, I crash with:

2024-04-22T07:31:39.642560Z  INFO bevy_input::gamepad: Gamepad { id: 0 } Connected
thread 'main' panicked at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gilrs-0.10.6/src/ev/filter.rs:528:9:
Filter changed Some(event) into None. See ev::filter documentation for more info.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic in system `bevy_gilrs::gilrs_system::gilrs_event_system`!
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!

To Reproduce

  1. Plug in dual sense controller
  2. boot jumpy
  3. Press any dpad button

(Repro'd on macOS, may be platform specific)

Expected Behavior

No response

Additional Context

Full backtrace:

Filter changed Some(event) into None. See ev::filter documentation for more info.
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <core::option::Option<gilrs::ev::Event> as gilrs::ev::filter::Filter>::filter_ev
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gilrs-0.10.6/src/ev/filter.rs:528:9
   3: bevy_gilrs::gilrs_system::gilrs_event_system
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_gilrs-0.11.3/src/gilrs_system.rs:36:35
   4: core::ops::function::FnMut::call_mut
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:166:5
   5: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:294:13
   6: <Func as bevy_ecs::system::function_system::SystemParamFunction<fn(F0,F1,F2,F3,F4) .> Out>>::run::call_inner
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/function_system.rs:622:21
   7: <Func as bevy_ecs::system::function_system::SystemParamFunction<fn(F0,F1,F2,F3,F4) .> Out>>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/function_system.rs:625:17
   8: <bevy_ecs::system::function_system::FunctionSystem<Marker,F> as bevy_ecs::system::system::System>::run_unsafe
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/function_system.rs:460:19
   9: bevy_ecs::schedule::executor::multi_threaded::MultiThreadedExecutor::spawn_system_task::{{closure}}::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/schedule/executor/multi_threaded.rs:505:26
  10: core::ops::function::FnOnce::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
  11: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9
  12: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  13: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  14: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  15: bevy_ecs::schedule::executor::multi_threaded::MultiThreadedExecutor::spawn_system_task::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/schedule/executor/multi_threaded.rs:500:23
  16: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::future::future::Future>::poll
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:296:9
  17: <futures_lite::future::CatchUnwind<F> as core::future::future::Future>::poll::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:626:42
  18: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9
  19: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  20: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  21: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  22: <futures_lite::future::CatchUnwind<F> as core::future::future::Future>::poll
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:626:9
  23: async_executor::Executor::spawn_inner::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-executor-1.11.0/src/lib.rs:243:20
  24: async_task::raw::RawTask<F,T,S,M>::run::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-task-4.7.0/src/raw.rs:550:21
  25: core::ops::function::FnOnce::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
  26: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9
  27: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  28: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  29: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  30: async_task::raw::RawTask<F,T,S,M>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-task-4.7.0/src/raw.rs:549:23
  31: async_task::runnable::Runnable<M>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-task-4.7.0/src/runnable.rs:781:18
  32: async_executor::Executor::tick::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-executor-1.11.0/src/lib.rs:331:9
  33: bevy_tasks::thread_executor::ThreadExecutorTicker::tick::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/thread_executor.rs:105:39
  34: bevy_tasks::task_pool::TaskPool::execute_scope::{{closure}}::{{closure}}::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:503:45
  35: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::future::future::Future>::poll
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:296:9
  36: <futures_lite::future::CatchUnwind<F> as core::future::future::Future>::poll::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:626:42
  37: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9
  38: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  39: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  40: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  41: <futures_lite::future::CatchUnwind<F> as core::future::future::Future>::poll
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:626:9
  42: bevy_tasks::task_pool::TaskPool::execute_scope::{{closure}}::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:506:77
  43: <futures_lite::future::Or<F1,F2> as core::future::future::Future>::poll
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:526:33
  44: bevy_tasks::task_pool::TaskPool::execute_scope::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:509:41
  45: bevy_tasks::task_pool::TaskPool::scope_with_executor_inner::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:420:85
  46: futures_lite::future::block_on::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:89:27
  47: std::thread::local::LocalKey<T>::try_with
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:270:16
  48: std::thread::local::LocalKey<T>::with
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:246:9
  49: futures_lite::future::block_on
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-lite-1.13.0/src/future.rs:79:11
  50: bevy_tasks::task_pool::TaskPool::scope_with_executor_inner
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:374:13
  51: bevy_tasks::task_pool::TaskPool::scope_with_executor::{{closure}}
  52: std::thread::local::LocalKey<T>::try_with
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:270:16
  53: std::thread::local::LocalKey<T>::with
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:246:9
  54: bevy_tasks::task_pool::TaskPool::scope_with_executor
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_tasks-0.11.3/src/task_pool.rs:307:31
  55: <bevy_ecs::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs::schedule::executor::SystemExecutor>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/schedule/executor/multi_threaded.rs:190:9
  56: bevy_ecs::world::World::try_run_schedule::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1851:55
  57: bevy_ecs::world::World::try_schedule_scope
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1782:21
  58: bevy_ecs::world::World::try_run_schedule
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1851:9
  59: bevy_app::main_schedule::Main::run_main::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_app-0.11.3/src/main_schedule.rs:146:31
  60: bevy_ecs::world::World::resource_scope
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1344:22
  61: bevy_app::main_schedule::Main::run_main
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_app-0.11.3/src/main_schedule.rs:144:9
  62: core::ops::function::FnMut::call_mut
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:166:5
  63: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:294:13
  64: <Func as bevy_ecs::system::exclusive_function_system::ExclusiveSystemParamFunction<fn(F0) .> Out>>::run::call_inner
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/exclusive_function_system.rs:203:21
  65: <Func as bevy_ecs::system::exclusive_function_system::ExclusiveSystemParamFunction<fn(F0) .> Out>>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/exclusive_function_system.rs:206:17
  66: <bevy_ecs::system::exclusive_function_system::ExclusiveFunctionSystem<Marker,F> as bevy_ecs::system::system::System>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/system/exclusive_function_system.rs:103:19
  67: <bevy_ecs::schedule::executor::single_threaded::SingleThreadedExecutor as bevy_ecs::schedule::executor::SystemExecutor>::run::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/schedule/executor/single_threaded.rs:98:21
  68: core::ops::function::FnOnce::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
  69: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9
  70: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  71: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  72: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  73: <bevy_ecs::schedule::executor::single_threaded::SingleThreadedExecutor as bevy_ecs::schedule::executor::SystemExecutor>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/schedule/executor/single_threaded.rs:97:27
  74: bevy_ecs::world::World::run_schedule::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1865:51
  75: bevy_ecs::world::World::try_schedule_scope
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1782:21
  76: bevy_ecs::world::World::schedule_scope
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1836:9
  77: bevy_ecs::world::World::run_schedule
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.11.3/src/world/mod.rs:1865:9
  78: bevy_app::app::App::update
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_app-0.11.3/src/app.rs:244:24
  79: bevy_winit::winit_runner::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_winit-0.11.3/src/lib.rs:707:21
  80: <winit::platform_impl::platform::app_state::EventLoopHandler<T> as winit::platform_impl::platform::app_state::EventHandler>::handle_nonuser_event::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/app_state.rs:96:17
  81: winit::platform_impl::platform::app_state::EventLoopHandler<T>::with_callback
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/app_state.rs:70:13
  82: <winit::platform_impl::platform::app_state::EventLoopHandler<T> as winit::platform_impl::platform::app_state::EventHandler>::handle_nonuser_event
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/app_state.rs:91:9
  83: winit::platform_impl::platform::app_state::Handler::handle_nonuser_event
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/app_state.rs:199:21
  84: winit::platform_impl::platform::app_state::AppState::cleared
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/app_state.rs:386:9
  85: winit::platform_impl::platform::observer::control_flow_end_handler::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/observer.rs:79:21
  86: winit::platform_impl::platform::observer::control_flow_handler::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/observer.rs:41:9
  87: std::panicking::try::do_call
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40
  88: std::panicking::try
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19
  89: std::panic::catch_unwind
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14
  90: winit::platform_impl::platform::event_loop::stop_app_on_panic
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/event_loop.rs:245:11
  91: winit::platform_impl::platform::observer::control_flow_handler
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/observer.rs:39:5
  92: winit::platform_impl::platform::observer::control_flow_end_handler
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/observer.rs:74:9
  93: <unknown>
  94: <unknown>
  95: <unknown>
  96: <unknown>
  97: <unknown>
  98: <unknown>
  99: <unknown>
 100: <unknown>
 101: <unknown>
 102: <unknown>
 103: winit::platform_impl::platform::event_loop::EventLoop<T>::run_return::{{closure}}
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/event_loop.rs:220:22
 104: objc2::rc::autorelease::autoreleasepool
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/objc2-0.3.0-beta.3.patch-leaks.3/src/rc/autorelease.rs:313:5
 105: winit::platform_impl::platform::event_loop::EventLoop<T>::run_return
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/event_loop.rs:211:25
 106: winit::platform_impl::platform::event_loop::EventLoop<T>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/macos/event_loop.rs:190:25
 107: winit::event_loop::EventLoop<T>::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/event_loop.rs:305:9
 108: bevy_winit::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_winit-0.11.3/src/lib.rs:186:16
 109: bevy_winit::winit_runner
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_winit-0.11.3/src/lib.rs:795:9
 110: core::ops::function::FnOnce::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
 111: core::ops::function::FnOnce::call_once{{vtable.shim}}
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
 112: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/alloc/src/boxed.rs:2007:9
 113: bevy_app::app::App::run
             at /Users/max/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_app-0.11.3/src/app.rs:292:9
 114: jumpy::main
             at ./src/main.rs:188:5
 115: core::ops::function::FnOnce::call_once
             at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Encountered a panic in system `bevy_gilrs::gilrs_system::gilrs_event_system`!
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!

MaxCWhitehead avatar Apr 22 '24 07:04 MaxCWhitehead

This looks relevant: https://gitlab.com/gilrs-project/gilrs/-/issues/162

MaxCWhitehead avatar Apr 22 '24 07:04 MaxCWhitehead

This was allegedly fixed in new gilrs, however because we are not keeping up with bevy, may not get this fix from upstream if they pin version too narrowly, will check.

We may consider forking bevy crate for fixes like this if not planning to upgrade to bevy 0.12 (which was blocked on last attempt by rendering changes that are not compatible with bones / likely not going to do this work).

MaxCWhitehead avatar Jun 11 '24 01:06 MaxCWhitehead

Fixed by #1032 & https://github.com/fishfolk/bones/pull/475, thanks @RockasMockas

MaxCWhitehead avatar Oct 07 '24 19:10 MaxCWhitehead