From 8bfa84f73f5a7380c5f7d0062caac352b8b7a200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Thu, 4 May 2017 08:44:11 +0200 Subject: [PATCH] log_writer_file: make sure to close the file and avoid doing a loop iteration when the thread is requested to exit (as it could access _buffer). --- src/modules/logger/log_writer_file.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/logger/log_writer_file.cpp b/src/modules/logger/log_writer_file.cpp index a54f3a38b7..5f977ee38a 100644 --- a/src/modules/logger/log_writer_file.cpp +++ b/src/modules/logger/log_writer_file.cpp @@ -70,6 +70,10 @@ LogWriterFile::~LogWriterFile() perf_free(_perf_write); perf_free(_perf_fsync); + if (_fd >= 0) { + ::close(_fd); + } + if (_buffer) { delete[] _buffer; } @@ -91,6 +95,8 @@ void LogWriterFile::start_log(const char *filename) if (_buffer == nullptr) { PX4_ERR("Can't create log buffer"); + ::close(_fd); + _fd = -1; _should_run = false; return; } @@ -174,6 +180,10 @@ void LogWriterFile::run() } } + if (_exit_thread) { + break; + } + int poll_count = 0; int written = 0;