Browse Source

sdlog2: don't free the logbuffer after disarm

Only free the logbuffer if you exit sdlog2. After disarming, just reset
the pointers. This way, we don't take any risks doing malloc and free.

The actual "double free" was caused by trying to free the perf counter
inside logbuffer_free.
sbg
Julian Oes 9 years ago committed by Lorenz Meier
parent
commit
4179ed6c19
  1. 7
      src/modules/sdlog2/sdlog2.c

7
src/modules/sdlog2/sdlog2.c

@ -807,8 +807,8 @@ void sdlog2_stop_log() @@ -807,8 +807,8 @@ void sdlog2_stop_log()
/* free log writer performance counter */
perf_free(perf_write);
/* free log buffer */
logbuffer_free(&lb);
/* reset the logbuffer */
logbuffer_reset(&lb);
mavlink_and_console_log_info(&mavlink_log_pub, "[blackbox] stopped (%lu drops)", skipped_count);
@ -2136,7 +2136,8 @@ int sdlog2_thread_main(int argc, char *argv[]) @@ -2136,7 +2136,8 @@ int sdlog2_thread_main(int argc, char *argv[])
pthread_mutex_destroy(&logbuffer_mutex);
pthread_cond_destroy(&logbuffer_cond);
free(lb.data);
/* free log buffer */
logbuffer_free(&lb);
thread_running = false;

Loading…
Cancel
Save