An unknown function is invoked during the ISR's execution

The reuse/reset of the main stack is done internally by FreeRTOS when starting the scheduler and can’t be hooked.
Cortex-M MCUs have a main stack (see MSP register) and a process stack (see PSP register). The latter is used for tasks stack managed by FreeRTOS. The main stack is used by ISRs.
You create the logger and UART instances on the main stack and start FreeRTOS.
Hence both objects living in the main stack might and likely will be corrupted as soon as an ISR runs.
In short DON‘T use the main stack for anything you need after starting FreeRTOS.
So make the instances e.g. global or static as mentioned before to avoid their corruption.

Edit. This is also found multiple times in the forum and for instance here: