I am in the progress of updating to nRF5_SDK 15.2.0 from 15.0.0, project on nRF52840/Segger Embedded Studio.
I have NRF_LOG_FILTERS_ENABLED defined since I want to log less over UART than to my crash logger.
It seems that the code on line 174 in nrf_log_init() in nrf_log_frontend.c writes to another modules memory. I traced the reason to be that __log_dynamic_data_run_size__ == 0, and thus the pointer assigned on line 172 being pointing into the next section.
Is this correct, or have I misconfigured something?
My workaround for now is to turn off log filtering.
The offending code from nrf_log_frontends.c (line 1 in the snippet is line 169 in nrf_log_frontents.c)
for (i = 0; i < modules_cnt; i++)
nrf_log_module_dynamic_data_t * p_module_ddata = NRF_LOG_DYNAMIC_SECTION_VARS_GET(i);
nrf_log_module_filter_data_t * p_module_filter = NRF_LOG_FILTER_SECTION_VARS_GET(i);
p_module_ddata->filter = 0;
p_module_filter->filter_lvls = 0;
You need to update "flash_placement.xml" file in the project. Have you done that? There is a new section added (log_filter_data).
Thank you for the quick and precise response!
I had updated the flash_placement.xml, but only added the .log_filter_data_run section and missed the .log_filter_data section.
This seems to solve my issue.