I just searched a while so I share it here before someone else is wasting time…
I am using a STM32 High-Density device with FreeRTOS and the ST FWlib 3.0 and had system crashes.
The supplied startup code in the FWlib sets the stack pointer in the vector table (1st entry) to the fixed address 0x20000400. After initializing the external memory interface (if any) it sets the MSP register to the desired value (_estack defined in the linker script).
Normaly this should be ok but FreeRTOS resets the stack pointer (MSP) to the value stored in the vector table (when staring the first thread). This is ok and saves stack space.
The too ideas are nice but do not play together very well…
My solution was to edit the startup code (in $(FWLIB)/CMSIS/Core/CM3/startup) to place &_estack into the vector table (I am not using external RAM).