I think the crash was caused by a combination of factors. The log shows quite a few things went wrong.
To start with, the airspeed readings look quite a long way off:
the POWR log shows the power on the server rail sometimes went outside the backup power limits:
when POWR.flags goes to 33 it means servo voltage is outside acceptable range to act as a backup supply.
the big problem was the pitch estimate, which was clearly way off:
the question is why is it so far off? The accels and gyros match between the two IMUs.
One clue may be the bad compass:
a bad compass can affect attitude in some cases
the EKF and DCM disagree strongly about yaw:
that yaw disparity will cause the EKF to apply the GPS velocity corrections incorrectly, which can badly affect attitude estimates.
Right at the end the EKF did give up, and control was handed over to DCM. It was too late to save the plane though:
Overall I think the crash was caused by a combination of bad compass and bad airspeed. The EKF relies on looking at consistency of inputs. Both airspeed and compass were badly off, and that got the EKF state badly out of wack with reality.
I don’t think it’s a bug, it is just a corner case that a statistical filter like the EKF can’t handle (ie. it got bad sensor data, and it misinterpreted it).
I’d also note that you shouldn’t really have arming checks off. I don’t think that made a difference in this case, but it certainly does in a lot of cases.