summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0107.patch
blob: b5aad0f88fb522e06364af7f114e09da554f63bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From: Andreas Pehrson <apehrson@mozilla.com>
Date: Wed, 10 Apr 2024 21:54:00 +0000
Subject: Bug 1888181 - (fix-52fec7d3) Limit scope of race checker in
 VideoCaptureModuleV4L2::StartCapture. r=mjf

TSAN detects a race between destroying the scoped race checker in StartCapture
and creating the scoped race checker in CaptureProcess, because once the capture
thread has been created (and given its run function) there is no synchronization
before the run function starts to run.

This patch avoids the race by destroying the StartCapture scoped race checker
before creating the capture thread.

Differential Revision: https://phabricator.services.mozilla.com/D207203
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/b046a1446cee5ab485d4868b3ca9784b16b2d02f
---
 modules/video_capture/linux/video_capture_v4l2.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc
index 6d8a5e463f..db2450a2c7 100644
--- a/modules/video_capture/linux/video_capture_v4l2.cc
+++ b/modules/video_capture/linux/video_capture_v4l2.cc
@@ -129,6 +129,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture(
     }
   }
 
+  {
   // We don't want members above to be guarded by capture_checker_ as
   // it's meant to be for members that are accessed on the API thread
   // only when we are not capturing. The code above can be called many
@@ -298,6 +299,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture(
   _requestedCapability = capability;
   _captureStarted = true;
   _streaming = true;
+  }
 
   // start capture thread;
   if (_captureThread.empty()) {