# Hard fault on STM32 with freertos (missing task stack trace)

**URL:** <https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555>\
**Category:** Memfault Help\
**Created:** [March 27, 2022, 4:46pm UTC](https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555 "2022-03-27T16:46:26Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![PaoloC](https://avatars.discourse-cdn.com/v4/letter/p/8797f3/32.png) [@PaoloC](https://community.memfault.com/u/PaoloC)\
**Post date:** [March 27, 2022, 4:46pm UTC](https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555/1 "2022-03-27T16:46:26Z")

</div>

Hi all,  
I am trying memfault sdk on STM32 project with Cube-IDE, freeRtos and crash dump saved in flash.  
This is done on a nucleo board with a simple test program (3 tasks) for possible inclusion in the real project.  
Coredump.bin & project symbols are manually loaded.

The exception is correctly detected by MemFault GUI application and the faulting task stack trace is correct.  
Thanks a lot MemFault !!!

Unfortunately I don’t see the stack trace of other running tasks ☹

Am I missing some configuration parameters to see all task stack frames?

Thanks for your attention  
PaoloC

 ![image](https://canada1.discourse-cdn.com/flex030/uploads/memfault/original/1X/319dabb1e4cd87aec6d0d3f8e74d1d858ec2b1bd.png)

---

<div class="post-metadata">

**Author:** ![francois](https://avatars.discourse-cdn.com/v4/letter/f/77aa72/32.png) [@francois](https://community.memfault.com/u/francois)\
**Post date:** [March 29, 2022, 2:05am UTC](https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555/2 "2022-03-29T02:05:22Z")

</div>

Hi @PaoloC! Thanks for getting in touch. Did you include the FreeRTOS module in your Memfault integration? You can find more details here:

- docs: [Embedded Integration Guide | Memfault Docs](https://docs.memfault.com/docs/mcu/self-serve/#rtos-port-files)
- SDK code: [memfault-firmware-sdk/ports/freertos at 1a64c90026bee493f6f92fdb760340b715c4b84d · memfault/memfault-firmware-sdk · GitHub](https://github.com/memfault/memfault-firmware-sdk/tree/1a64c90026bee493f6f92fdb760340b715c4b84d/ports/freertos)

---

<div class="post-metadata">

**Author:** ![PaoloC](https://avatars.discourse-cdn.com/v4/letter/p/8797f3/32.png) [@PaoloC](https://community.memfault.com/u/PaoloC)\
**Post date:** [April 1, 2022, 11:32am UTC](https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555/3 "2022-04-01T11:32:54Z")

</div>

Hi Francois,

thanks a lot for your answer !

I saw & followed the instructions at top of file `memfault_freertos_ram_regions.c`.

In particular for step 4 I have implemented & modified the function `memfault_platform_coredump_get_regions`.

The simple modification consists of defining the array of dump regions:

`static sMfltCoredumpRegion s_coredump_regions[16];`

Now Memfault correctly shows all tasks 😊😊😊

My implementation of **memfault\_platform\_coredump\_get\_regions** is:

```auto
MEMFAULT_WEAK
const sMfltCoredumpRegion memfault_platform_coredump_get_regions(
        const sCoredumpCrashInfo *crash_info, 
        size_t *num_regions) 
{

  static sMfltCoredumpRegion s_coredump_regions[16]; // Added
  int region_idx = 0;
  const size_t active_stack_size_to_collect = 512;

  // first, capture the active stack
  s_coredump_regions[0] = MEMFAULT_COREDUMP_MEMORY_REGION_INIT(
      crash_info->stack_address, 
      memfault_platform_sanitize_address_range(crash_info->stack_address, active_stack_size_to_collect)
  );

  region_idx++;

  extern uint32_t __memfault_capture_start;
  extern uint32_t __memfault_capture_end;
  const. size_t memfault_region_size = (uint32_t)&__memfault_capture_end - (uint32_t)&__memfault_capture_start;

  s_coredump_regions[region_idx] = MEMFAULT_COREDUMP_MEMORY_REGION_INIT(
      &__memfault_capture_start, 
      memfault_region_size
  );
  region_idx++;

  region_idx += memfault_freertos_get_task_regions(&s_coredump_regions[region_idx],
  MEMFAULT_ARRAY_SIZE(s_coredump_regions) - region_idx);
  *num_regions = region_idx; // was: MEMFAULT_ARRAY_SIZE(s_coredump_regions);

  return &s_coredump_regions[0];
}

```

---

<div class="post-metadata">

**Author:** ![francois](https://avatars.discourse-cdn.com/v4/letter/f/77aa72/32.png) [@francois](https://community.memfault.com/u/francois)\
**Post date:** [April 1, 2022, 3:35pm UTC](https://community.memfault.com/t/hard-fault-on-stm32-with-freertos-missing-task-stack-trace/555/4 "2022-04-01T15:35:36Z")

</div>

Great to hear you’re up and running!
