Not something which I have experienced, but rather inferred from reading the code of nRF5_SDK_17.0.2_d674dde/nRF5_SDK_17.0.2_d674dde/components/libraries/log/src/nrf_log_frontend.c:739.
We have this code :
//Check if end of data is not reached. if (rd_idx >= m_log_data.wr_idx) { m_log_data.rd_idx = m_log_data.wr_idx; return false; }
The read pointer is progressed after skipping some in progress blocks. This means that when the preparation of these blocks is complete and their in_progress flag is lowered, all the same, they won't ever be passed to the backend, they are lost for ever.
Of course, in real life, since the log flush (calling nrf_log_frontend_dequeue) is either done at once, or in general done by a lower priority RTOS task than that which produces the log matter, then this situation won't happen.
However in principle would it be possible for it to happen ? if so isn't that some sort of bug ?