Skip to content

Commit

Permalink
log_writer_file: fix race condition for fast consecutive stop & start…
Browse files Browse the repository at this point in the history
… calls
  • Loading branch information
bkueng committed May 29, 2019
1 parent 03332aa commit 721f9f9
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/modules/logger/log_writer_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,18 @@ LogWriterFile::~LogWriterFile()

void LogWriterFile::start_log(LogType type, const char *filename)
{
// At this point we don't expect the file to be open, but it can happen for very fast consecutive stop & start
// calls. In that case we wait for the thread to close the file first.
lock();

while (_buffers[(int)type].fd() >= 0) {
unlock();
system_usleep(5000);
lock();
}

unlock();

if (type == LogType::Full) {
// register the current file with the hardfault handler: if the system crashes,
// the hardfault handler will append the crash log to that file on the next reboot.
Expand Down

0 comments on commit 721f9f9

Please sign in to comment.