Last night I stopped trying to add more functionality and get to the bottom of these random crashes. If I have lots of GPS data flowing through the system the system will crash in various ways. One way includes a Data Abort exception. This usually means a bad point or corrupted data. Overrun stacks is a great way to corrupt data.
So I spent some time looking at the various stacks. There is one per basic ARM modes (IRQ, FIQ, ABT, …). These are used during exception processing. The other stacks are those of each task.
The task stacks have a method to call to test the usage. These seem ok. But I think I found that the various AMR exception stacks are way to small. Some are a tiny 16 bytes long. Time to write a stack probe routine for these stacks!