From 687bfb79184f43ebf01a6ebed86f68a8e7b1b5eb Mon Sep 17 00:00:00 2001 From: Alan George Date: Tue, 26 May 2026 11:37:07 -0600 Subject: [PATCH 1/2] Fix race in event_tracer --- .github/workflows/tests.yml | 6 ++++-- src/trace/event_tracer.cpp | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 733017d1..7a9fbabf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -198,18 +198,20 @@ jobs: # ---------- Run unit tests ---------- - name: Run unit tests (Unix) if: runner.os != 'Windows' - timeout-minutes: 1 + timeout-minutes: 15 shell: bash run: | build-release/bin/livekit_unit_tests \ + --gtest_repeat=1000 \ --gtest_output=xml:build-release/unit-test-results.xml - name: Run unit tests (Windows) if: runner.os == 'Windows' - timeout-minutes: 1 + timeout-minutes: 15 shell: pwsh run: | build-release\bin\livekit_unit_tests.exe ` + --gtest_repeat=1000 ` --gtest_output="xml:build-release\unit-test-results.xml" # ---------- Install + start livekit-server for integration tests ---------- diff --git a/src/trace/event_tracer.cpp b/src/trace/event_tracer.cpp index 14522a24..618d9f78 100644 --- a/src/trace/event_tracer.cpp +++ b/src/trace/event_tracer.cpp @@ -408,8 +408,12 @@ void StopTracing() { // Disable tracing first to stop new events g_tracing_enabled.store(false, std::memory_order_release); - // Signal writer thread to shut down - g_shutdown_requested.store(true); + // Signal writer thread to shut down. The shutdown flag must be set while + // holding g_mutex so the writer thread cannot miss the notification + { + const std::scoped_lock lock(g_mutex); + g_shutdown_requested.store(true); + } g_cv.notify_one(); // Wait for writer thread to finish From c347a05ed63c27b339f2370d155768bb108b1b8a Mon Sep 17 00:00:00 2001 From: Alan George Date: Tue, 26 May 2026 12:09:09 -0600 Subject: [PATCH 2/2] Repeat 100 times for good measure --- .github/workflows/tests.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7a9fbabf..55ff58df 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -198,20 +198,22 @@ jobs: # ---------- Run unit tests ---------- - name: Run unit tests (Unix) if: runner.os != 'Windows' - timeout-minutes: 15 + timeout-minutes: 10 shell: bash run: | build-release/bin/livekit_unit_tests \ - --gtest_repeat=1000 \ + --gtest_repeat=100 \ + --gtest_brief=1 \ --gtest_output=xml:build-release/unit-test-results.xml - name: Run unit tests (Windows) if: runner.os == 'Windows' - timeout-minutes: 15 + timeout-minutes: 10 shell: pwsh run: | build-release\bin\livekit_unit_tests.exe ` - --gtest_repeat=1000 ` + --gtest_repeat=100 ` + --gtest_brief=1 ` --gtest_output="xml:build-release\unit-test-results.xml" # ---------- Install + start livekit-server for integration tests ----------