mirror of
https://github.com/SlimeVR/SlimeVR-Tracker-ESP.git
synced 2026-04-06 02:01:57 +02:00
[ICM45*] Fix processing bad samples and stack overflow panics #101
Closed
opened 2026-04-05 17:51:50 +02:00 by MrUnknownDE
·
0 comments
No Branch/Tag Specified
main
feat/serialbuffer
fix/use-realtime-tos
network-experiments
dependabot/github_actions/jidicula/clang-format-action-4.18.0
feat_flashmode
icm-55686
antiing-the-aliases
chg_networkname
feat/mlx90393-support
mag-support
fancy-wifi-provisioning
fake_v0.7.0
mdns-discovery
fix-server-discovery
config-change-logic
add-id-command
logging-ids
feat_benchmark
machine-optimized-spi
ads111x-implementation
mag-and-spi
glove-dynamic-sfusion
llelievr/ci-release
espnow
feat/toggle-mag
cleanup-feature-flags
v0.7.2
v0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.4
v0.5.3
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.3
v0.2.2
v0.2.1
v0.2.0
Labels
Clear labels
Area: Continuous Integration
Area: Continuous Integration
Area: Continuous Integration
Area: Documentation
Area: Hardware Protocol
Area: Hardware Protocol
Area: Hardware Protocol
Area: Hardware Protocol
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: Sensor Fusion
Area: Sensor Fusion
Area: Sensor Fusion
Area: Sensor Fusion
Difficulty: Math Heavy
Difficulty: Newbie Friendly
Priority: High
Priority: High
Priority: High
Priority: High
Priority: High
Priority: High
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Status: Blocked by other issue
Status: Help Wanted
Status: Help Wanted
Status: Obsolete
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Wontfix
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
MrUnknownDE
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/SlimeVR-Tracker-ESP#101
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jabberrock on 4/18/2025
At startup, we were receiving invalid samples from the IMU and passing it to VQF. This causes huge initial rotations and accelerations that takes time for VQF to eliminate.
Fix is to check the header to see if the data is present. Also had to add a check for invalid gyro samples even though it is present.
During play, the tracker would rarely go haywire and jump into a random position. I suspect this is caused by a stack overflow, which causes the tracker to panic. Combined with problem (1), whenever the tracker restarts, it would send huge rotations and accelerations to the server. This causes the jump.
Fix is to make the read_buffer static, so that it's reserved on the BSS segment instead of the stack. I noticed this because I was getting panics when I tried to increase the size of the read buffer, or declared some new stack variables.
After implementing these two fixes, rotation and acceleration are stable at startup, and I am able to make modifications to the icm45base code without randomly encountering panics.