Source code

Revision control

Copy as Markdown

Other Tools

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.
---
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()) {