mirror of
https://github.com/apache/nuttx.git
synced 2026-10-05 05:07:48 +00:00
Broken by 635cfa. On an stm32 the heap is formed from const uintptr_t g_idle_topstack = HEAP_BASE; where HEAP_BASE is &_bss + CONFIG_IDLE_STACKSIZE. Both these values are not deterministic. One comes from the compiler, the other the system configurator. a 3 byte bss and 250 byte stack would lead to and unaligned address used as the heap to be. The compiler used clever `strd r1,r3,[r5,#8]` to store 2 values in one memory cycle into the heap_impl struct. Resulting in a hardfault. Change the amount of bss or the CONFIG_IDLE_STACKSIZE could lead to a non-functional NuttX system. |
||
|---|---|---|
| .. | ||
| Make.defs | ||
| mm.h | ||
| mm_addfreechunk.c | ||
| mm_brkaddr.c | ||
| mm_calloc.c | ||
| mm_checkcorruption.c | ||
| mm_extend.c | ||
| mm_free.c | ||
| mm_heapmember.c | ||
| mm_initialize.c | ||
| mm_mallinfo.c | ||
| mm_malloc.c | ||
| mm_malloc_usable_size.c | ||
| mm_memalign.c | ||
| mm_realloc.c | ||
| mm_sbrk.c | ||
| mm_sem.c | ||
| mm_shrinkchunk.c | ||
| mm_size2ndx.c | ||
| mm_zalloc.c | ||