Ingenuity suffered an interesting software bug on its sixth flight:
Ingenuity uses an “inertial measurement unit” (IMU, not so different from the motion sensors on your phone) to detect short-term movement, but the camera to correct long-range errors. This is a good system overall, since the IMU has excellent sensitivity but can drift, while the camera has less sensitivity but no drift.
The problem they encountered is that a glitch caused a frame drop. That’s not too surprising; lots of things can cause a small glitch like that. However, it messed up the timestamps for all subsequent images. The code that fuses the IMU data with the camera data needs accurate timestamps so it can predict what the camera should have been looking at for that frame. That is, it takes some previous camera data, uses the IMU to adjust that data into what the camera should be looking at, and then compares the result with what it actually captured. The difference is the IMU error, which it can fold back into its internal model.
But if the timestamps are wrong, then it throws the process off. And in this case, led to overcorrections and oscillation. Fortunately, it landed ok (in part because they don’t use the camera for the landing).
Sounds to me like a relatively easy firmware fix. This bug sounded like a relatively subtle one that probably wouldn’t show up in Earth testing unless they did so intentionally.