From c334f94751a1f66be778e894a77399879c95b472 Mon Sep 17 00:00:00 2001 From: Calvin Date: Tue, 12 Mar 2024 14:00:06 -0700 Subject: [PATCH 1/2] chore: cherry-pick 2607ddacd643 from chromium --- patches/chromium/.patches | 1 + .../chromium/cherry-pick-2607ddacd643.patch | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 patches/chromium/cherry-pick-2607ddacd643.patch diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 3517931159fd7..fa0d2606a4840 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -131,3 +131,4 @@ fix_suppress_clang_-wimplicit-const-int-float-conversion_in.patch cherry-pick-e7ffe20ebfac.patch fix_getcursorscreenpoint_wrongly_returns_0_0.patch fix_add_support_for_skipping_first_2_no-op_refreshes_in_thumb_cap.patch +cherry-pick-2607ddacd643.patch diff --git a/patches/chromium/cherry-pick-2607ddacd643.patch b/patches/chromium/cherry-pick-2607ddacd643.patch new file mode 100644 index 0000000000000..2c3fce7ae883b --- /dev/null +++ b/patches/chromium/cherry-pick-2607ddacd643.patch @@ -0,0 +1,39 @@ +From 2607ddacd643fe84e7b3413be15a5cb0591ae9de Mon Sep 17 00:00:00 2001 +From: Calvin Watford +Date: Tue, 12 Mar 2024 20:37:32 +0000 +Subject: [PATCH] Fix primary display race condition crash on Windows + +In rare cases, it's possible for the OS to provide us a list of displays +that doesn't contain the primary display. This situation causes +undefined behavior (dereference past vector end) and a crash to occur in +|display::win::(anon)::DisplayInfosToScreenWinDisplays| on builds +without DCHECK enabled. + +Bug: 40265302 +Change-Id: I2154bedea84478a84147c380610c85d4ea3f703a +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5353255 +Reviewed-by: David Bienvenu +Reviewed-by: Robert Liao +Commit-Queue: David Bienvenu +Cr-Commit-Position: refs/heads/main@{#1271793} +--- + +diff --git a/ui/display/win/screen_win.cc b/ui/display/win/screen_win.cc +index bbdd9a1..5cf436d 100644 +--- a/ui/display/win/screen_win.cc ++++ b/ui/display/win/screen_win.cc +@@ -322,7 +322,13 @@ + display_infos_remaining, [](const internal::DisplayInfo& display_info) { + return display_info.screen_rect().origin().IsOrigin(); + }); +- DCHECK(primary_display_iter != display_infos_remaining.end()); ++ ++ // If we can't find the primary display, we likely witnessed a race condition ++ // when querying the OS for display info. We expect another OS notification to ++ // trigger this lookup again soon, so just return an empty list for now. ++ if (primary_display_iter == display_infos_remaining.end()) { ++ return {}; ++ } + + // Build the tree and determine DisplayPlacements along the way. + DisplayLayoutBuilder builder(primary_display_iter->id()); From 761d25f535d2daf4211069cf54bdf4920e497008 Mon Sep 17 00:00:00 2001 From: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 21:07:54 +0000 Subject: [PATCH 2/2] chore: update patches --- patches/chromium/cherry-pick-2607ddacd643.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/patches/chromium/cherry-pick-2607ddacd643.patch b/patches/chromium/cherry-pick-2607ddacd643.patch index 2c3fce7ae883b..43d515bfe092f 100644 --- a/patches/chromium/cherry-pick-2607ddacd643.patch +++ b/patches/chromium/cherry-pick-2607ddacd643.patch @@ -1,7 +1,7 @@ -From 2607ddacd643fe84e7b3413be15a5cb0591ae9de Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Calvin Watford Date: Tue, 12 Mar 2024 20:37:32 +0000 -Subject: [PATCH] Fix primary display race condition crash on Windows +Subject: Fix primary display race condition crash on Windows In rare cases, it's possible for the OS to provide us a list of displays that doesn't contain the primary display. This situation causes @@ -16,13 +16,12 @@ Reviewed-by: David Bienvenu Reviewed-by: Robert Liao Commit-Queue: David Bienvenu Cr-Commit-Position: refs/heads/main@{#1271793} ---- diff --git a/ui/display/win/screen_win.cc b/ui/display/win/screen_win.cc -index bbdd9a1..5cf436d 100644 +index 6b6189a124e3fde423b129ef34f2c96186b4e86d..1040e583c6c50ba01efc44faa1882657ff8f63b2 100644 --- a/ui/display/win/screen_win.cc +++ b/ui/display/win/screen_win.cc -@@ -322,7 +322,13 @@ +@@ -324,7 +324,13 @@ std::vector DisplayInfosToScreenWinDisplays( display_infos_remaining, [](const internal::DisplayInfo& display_info) { return display_info.screen_rect().origin().IsOrigin(); });