Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a7f4b5d authored by Srinu Jella's avatar Srinu Jella
Browse files

Start listener thread only after successful open call

Use case: Stress tests ON\OFF with different concurrent
scenarios

Failure: Crash in btsnoop_net_listen thread

Root cause: While starting and shutting down the module
we are calling same function update_logging(). While at
the start it is creating listen thread and throwing error
and exiting without closing the listen thread. While
shutdown of module it "should_log" matches with "is_logging"
and it considers cleanup is not required and returns,
leaving Behind the listen thread open. In the next BT ON,
another listen thread is created and causes the crash.

Fix: Started listener thread after prerequisite operations
are successful.

Change-Id: I92ef293d9b061d0ea65a0c41b506870152114bb0
parent 481d034f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -158,8 +158,6 @@ static void update_logging() {

  is_logging = should_log;
  if (should_log) {
    btsnoop_net_open();

    const char *log_path = stack_config->get_btsnoop_log_path();

    // Save the old log if configured to do so
@@ -179,6 +177,7 @@ static void update_logging() {
    }

    write(logfile_fd, "btsnoop\0\0\0\0\1\0\0\x3\xea", 16);
    btsnoop_net_open();
  } else {
    if (logfile_fd != INVALID_FD)
      close(logfile_fd);