From 6929883649edd4228d1a4c19396db775bf573bac Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Thu, 19 Nov 2020 15:42:12 +0000 Subject: [PATCH] Added mutex and condition_variable to srsUE's nas_test to avoid race condition on thread initialization. --- srsue/test/upper/nas_test.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/srsue/test/upper/nas_test.cc b/srsue/test/upper/nas_test.cc index c7f970736..eb915bc12 100644 --- a/srsue/test/upper/nas_test.cc +++ b/srsue/test/upper/nas_test.cc @@ -164,7 +164,10 @@ public: void run_thread() { + std::unique_lock lk(init_mutex); running = true; + init_cv.notify_all(); + lk.unlock(); while (running) { task_sched.tic(); task_sched.run_pending_tasks(); @@ -173,13 +176,19 @@ public: } void stop() { + std::unique_lock lk(init_mutex); + while (not running) { + init_cv.wait(lk); + } running = false; wait_thread_finish(); } - srslte::log_ref stack_log{"STCK"}; - pdcp_interface_gw* pdcp = nullptr; - srsue::nas* nas = nullptr; - bool running = false; + srslte::log_ref stack_log{"STCK"}; + pdcp_interface_gw* pdcp = nullptr; + srsue::nas* nas = nullptr; + bool running = false; + std::mutex init_mutex; + std::condition_variable init_cv; }; class gw_dummy : public gw_interface_nas, public gw_interface_pdcp @@ -310,7 +319,6 @@ int mme_attach_request_test() gw.init(gw_args, g_logger, &stack); stack.init(&nas); - usleep(5000); // Wait for stack to initialize before stoping it. // trigger test stack.switch_on(); stack.stop();