From 23110461c810b28ca54b9e20428c256c6d708990 Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Tue, 7 Apr 2020 17:41:36 -0700 Subject: [PATCH 1/2] chore: cherry-pick 3ac8883297e1 from chromium --- patches/chromium/.patches | 1 + .../chromium/cherry-pick-3ac8883297e1.patch | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 patches/chromium/cherry-pick-3ac8883297e1.patch diff --git a/patches/chromium/.patches b/patches/chromium/.patches index f640842db11ca..2af506fc13176 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -100,3 +100,4 @@ move_readablestream_requests_onto_the_stack_before_iteration.patch streams_convert_state_dchecks_to_checks.patch audiocontext_haspendingactivity_unless_it_s_closed.patch protect_automatic_pull_handlers_with_mutex.patch +cherry-pick-3ac8883297e1.patch diff --git a/patches/chromium/cherry-pick-3ac8883297e1.patch b/patches/chromium/cherry-pick-3ac8883297e1.patch new file mode 100644 index 0000000000000..b641f0fce71fc --- /dev/null +++ b/patches/chromium/cherry-pick-3ac8883297e1.patch @@ -0,0 +1,41 @@ +From 3ac8883297e17ea27828bac2bcf39fa5e009f384 Mon Sep 17 00:00:00 2001 +From: Raymond Toy +Date: Mon, 2 Mar 2020 23:22:26 +0000 +Subject: [PATCH] Break connections before removing from + active_source_handlers_. + +In DeferredTaskHandler::BreakConnections, we want to remove finished +handlers and break the connection. when a finished handler is removed +from active_source_handlers_, it might be deleted, but we were still +using that to create the connection. Instead, break the connection +first and then remove it. + +Manually ran test from the bug and it passes with this change. Without +this, it failed right away. + +Bug: 1057593 +Change-Id: I3c9346a6842f412100d608876adb268befb80470 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083436 +Commit-Queue: Raymond Toy +Reviewed-by: Hongchan Choi +Cr-Commit-Position: refs/heads/master@{#746142} +--- + .../blink/renderer/modules/webaudio/deferred_task_handler.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc b/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc +index 9fd38f0dde71b..fca70458c5a1f 100644 +--- a/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc ++++ b/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc +@@ -78,8 +78,10 @@ void DeferredTaskHandler::BreakConnections() { + wtf_size_t size = finished_source_handlers_.size(); + if (size > 0) { + for (auto* finished : finished_source_handlers_) { +- active_source_handlers_.erase(finished); ++ // Break connection first and then remove from the list because that can ++ // cause the handler to be deleted. + finished->BreakConnectionWithLock(); ++ active_source_handlers_.erase(finished); + } + finished_source_handlers_.clear(); + } From fa9e2901b42f5d3b1def5f93d935e9d43b0887a7 Mon Sep 17 00:00:00 2001 From: Electron Bot Date: Thu, 9 Apr 2020 20:36:59 +0000 Subject: [PATCH 2/2] update patches --- patches/chromium/.patches | 2 +- ..._before_removing_from_active_source_handlers.patch} | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) rename patches/chromium/{cherry-pick-3ac8883297e1.patch => break_connections_before_removing_from_active_source_handlers.patch} (83%) diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 230950c7ece61..e5ab781620128 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -101,7 +101,7 @@ streams_convert_state_dchecks_to_checks.patch -_point_usrsctp_to_a68325e7d9ed844cc84ec134192d788586ea6cc1.patch audiocontext_haspendingactivity_unless_it_s_closed.patch protect_automatic_pull_handlers_with_mutex.patch -cherry-pick-3ac8883297e1.patch +break_connections_before_removing_from_active_source_handlers.patch mojovideoencodeacceleratorservice_handle_potential_later.patch speculative_fix_for_crashes_in_filechooserimpl.patch reland_sequentialise_access_to_callbacks_in.patch diff --git a/patches/chromium/cherry-pick-3ac8883297e1.patch b/patches/chromium/break_connections_before_removing_from_active_source_handlers.patch similarity index 83% rename from patches/chromium/cherry-pick-3ac8883297e1.patch rename to patches/chromium/break_connections_before_removing_from_active_source_handlers.patch index b641f0fce71fc..d5b756bb444fc 100644 --- a/patches/chromium/cherry-pick-3ac8883297e1.patch +++ b/patches/chromium/break_connections_before_removing_from_active_source_handlers.patch @@ -1,8 +1,7 @@ -From 3ac8883297e17ea27828bac2bcf39fa5e009f384 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Raymond Toy Date: Mon, 2 Mar 2020 23:22:26 +0000 -Subject: [PATCH] Break connections before removing from - active_source_handlers_. +Subject: Break connections before removing from active_source_handlers_. In DeferredTaskHandler::BreakConnections, we want to remove finished handlers and break the connection. when a finished handler is removed @@ -19,12 +18,9 @@ Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083436 Commit-Queue: Raymond Toy Reviewed-by: Hongchan Choi Cr-Commit-Position: refs/heads/master@{#746142} ---- - .../blink/renderer/modules/webaudio/deferred_task_handler.cc | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc b/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc -index 9fd38f0dde71b..fca70458c5a1f 100644 +index 6ecedccc14ed15b81e916f0e1ff8f635489dcecc..b4a376aa8f5cb06efcc71032ed089db46dadf902 100644 --- a/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc +++ b/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc @@ -78,8 +78,10 @@ void DeferredTaskHandler::BreakConnections() {