From 5ce76e51d99c9dfaa0045382071995310bf57554 Mon Sep 17 00:00:00 2001 From: Andreas Pehrson Date: Mon, 15 Apr 2024 12:53:26 +0200 Subject: [PATCH] Bug 1888181 - updated libwebrtc patch stack --- .../libwebrtc/moz-patch-stack/0107.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 third_party/libwebrtc/moz-patch-stack/0107.patch diff --git a/third_party/libwebrtc/moz-patch-stack/0107.patch b/third_party/libwebrtc/moz-patch-stack/0107.patch new file mode 100644 index 000000000000..b5aad0f88fb5 --- /dev/null +++ b/third_party/libwebrtc/moz-patch-stack/0107.patch @@ -0,0 +1,39 @@ +From: Andreas Pehrson +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()) {