From a8215323a1e6f21c8442943f68f8fbe59a3f9ba6 Mon Sep 17 00:00:00 2001 From: Kamal Negi Date: Mon, 19 Sep 2016 14:16:56 +0530 Subject: [PATCH] Set alarm's queue to NULL on alarm expired Use Case: Repeated BT ON/OFF Failure: ANR due to race condition between random advertisement address generation completion(adv_raddr_timer) and BT shutdown. Steps: SNS Stress testing. Root Cause: Race condition happens between random advertisement address generation completion(adv_raddr_timer) and BT shutdown. Fix: For non-periodic alarms, set alarm's queue to NULL once alarm expired. Test: mm -j8 Change-Id: Idf8e2bebdc2ca7621aef06dd5f2075ef2c5fa08c --- osi/src/alarm.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/osi/src/alarm.cc b/osi/src/alarm.cc index edd036d19..620e35295 100644 --- a/osi/src/alarm.cc +++ b/osi/src/alarm.cc @@ -563,6 +563,7 @@ static void alarm_queue_ready(fixed_queue_t* queue, UNUSED_ATTR void* context) { alarm->deadline = 0; alarm->callback = NULL; alarm->data = NULL; + alarm->queue = NULL; } std::lock_guard cb_lock(*alarm->callback_mutex); -- 2.11.0