Компилятор arm-none-eabi-gcc (15:5.4.1+svn241155-1) 5.4.1 20160919 (на три года старше). Симптомы те же. Из *.map: 0x0000000020010000 _estack = 0x20010000
0x0000000000001400 _Min_Heap_Size = 0x1400
0x0000000000001400 _Min_Stack_Size = 0x1400
Если я правильно считаю, с 0x2000EC00 по 0x20010000 это куча и стек. При наступлении проблемы (непонятно пока из-за чего точно), значение указателя стека падает до 0x20000fb0, то есть, уже за границей стека.
Что это? Переполнение стека? По проявлению - похоже. Но почему втихаря, без предупреждений?
Upd: поднял размер стека до 0x6500 - не помогает.