The code reached a place it should never reach
What ArduPilot says:
- Internal errors 0x100000 (flow_of_control)
- Internal errors 0x20000 (bitmask_range)
- Internal errors 0x200000 (switch_full_sector_recursion)
- Internal errors 0x10000 (gcs_bad_missionprotocol_link)
- Internal errors 0x40000 (gcs_offset)
Programmers leave guards at places that “cannot happen”. flow_of_control is the general one, raised from about fifty places: Copter's land detector seeing high throttle while it still believes it is on the ground, a parameter save lost because too many were saved at once while armed, a mode or EKF type the code does not know. bitmask_range is a list index outside its list, gcs_bad_missionprotocol_link a mission upload with no link attached, switch_full_sector_recursion the flash storage calling itself. gcs_offset is not raised anywhere in these versions.
What to do, most likely first
A rare path through the firmware that its authors did not foresee.
CheckCan you make it happen again by doing the same thing? The l: number tells the developers which of the fifty places it was.
FixReboot. If it can be repeated, report it with the whole line, the steps and a log, and avoid those steps in flight.
A script or a ground-station tool saved many parameters in a burst while armed.
CheckThe error appeared while a script was running or a tuning screen was writing values.
FixRead back the parameters that were being saved: one of them may not have been stored. Save parameters in bulk only while disarmed.
Someone sent the developers' test command that creates an internal error on purpose.
Check“Creating internal error” is in the messages just before it.
FixReboot; nothing is wrong.
Where to do it:Setup & Tuning GuideSetup & Tuning Guide