[task] Replace SequenceManagerForTest in blink fuzzer ThreadManager [chromium/src : main]

0 views
Skip to first unread message

Etienne Pierre-Doray (Gerrit)

unread,
Mar 31, 2026, 7:05:23 PM (2 days ago) Mar 31
to Scott Haseley, Chromium LUCI CQ, chromium...@chromium.org, blink-...@chromium.org, chikamu...@chromium.org, kinuko...@chromium.org, ortuno...@chromium.org, scheduler-...@chromium.org, titoua...@chromium.org
Attention needed from Scott Haseley

Etienne Pierre-Doray added 1 comment

Patchset-level comments
File-level comment, Patchset 6 (Latest):
Etienne Pierre-Doray . resolved

PTAL

Open in Gerrit

Related details

Attention is currently required from:
  • Scott Haseley
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
Gerrit-Change-Number: 7718282
Gerrit-PatchSet: 6
Gerrit-Owner: Etienne Pierre-Doray <etie...@chromium.org>
Gerrit-Reviewer: Etienne Pierre-Doray <etie...@chromium.org>
Gerrit-Reviewer: Scott Haseley <shas...@chromium.org>
Gerrit-Attention: Scott Haseley <shas...@chromium.org>
Gerrit-Comment-Date: Tue, 31 Mar 2026 23:05:16 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Scott Haseley (Gerrit)

unread,
Apr 1, 2026, 1:39:25 PM (yesterday) Apr 1
to Etienne Pierre-Doray, Chromium LUCI CQ, chromium...@chromium.org, blink-...@chromium.org, chikamu...@chromium.org, kinuko...@chromium.org, ortuno...@chromium.org, scheduler-...@chromium.org, titoua...@chromium.org
Attention needed from Etienne Pierre-Doray

Scott Haseley voted and added 4 comments

Votes added by Scott Haseley

Code-Review+1

4 comments

Patchset-level comments
Scott Haseley . resolved

LGTM

File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.h
Line 33, Patchset 6 (Latest): ThreadManager(SequenceManagerFuzzerProcessor* processor);
Scott Haseley . unresolved

Please fix this WARNING reported by ClangTidy: check: google-explicit-constructor

single-argument constructors must be marked ...

check: google-explicit-constructor

single-argument constructors must be marked explicit to avoid unintentional implicit conversions (https://clang.llvm.org/extra/clang-tidy/checks/google/explicit-constructor.html)

(Note: You can add `Skip-Clang-Tidy-Checks: google-explicit-constructor` footer to the CL description to skip the check)

(Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel` or `mac-clang-tidy-rel`)

File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.h
Line 49, Patchset 6 (Latest): // Note that this doesn't guarantee advancing the thread's clock to |time|.
// The clock is advanced to the minimum desired time of all the owned threads.
Scott Haseley . unresolved

Outdated comment?

File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.cc
Line 84, Patchset 6 (Latest):void ThreadPoolManager::AdvanceClockSynchronouslyImpl() {
Scott Haseley . unresolved

FYI: this synchronization has historically caused a bunch of ephemeral hangs, e.g. crbug.com/398067546, crbug.com/328676397, crbug.com/396459484, etc. I investigated once (https://issues.chromium.org/issues/328676397#comment4) and found a thread created during a synchronization cycle was causing a deadlock. This change looks so much cleaner (!), and I _think_ should resolve that too.

---

Separately, I'm not sure how much value this fuzzer provides has vs. other testing. Of all the bugs that have been filed in the last few years, the only valid ones have been problems with the fuzzer. But it probably doesn't hurt to keep it around, especially if the synchronization issues are fixed..

Open in Gerrit

Related details

Attention is currently required from:
  • Etienne Pierre-Doray
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
    Gerrit-Change-Number: 7718282
    Gerrit-PatchSet: 6
    Gerrit-Owner: Etienne Pierre-Doray <etie...@chromium.org>
    Gerrit-Reviewer: Etienne Pierre-Doray <etie...@chromium.org>
    Gerrit-Reviewer: Scott Haseley <shas...@chromium.org>
    Gerrit-Attention: Etienne Pierre-Doray <etie...@chromium.org>
    Gerrit-Comment-Date: Wed, 01 Apr 2026 17:39:15 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Etienne Pierre-Doray (Gerrit)

    unread,
    12:49 PM (2 hours ago) 12:49 PM
    to Scott Haseley, Chromium LUCI CQ, chromium...@chromium.org, blink-...@chromium.org, chikamu...@chromium.org, kinuko...@chromium.org, ortuno...@chromium.org, scheduler-...@chromium.org, titoua...@chromium.org

    Etienne Pierre-Doray added 4 comments

    Patchset-level comments
    File-level comment, Patchset 7 (Latest):
    Etienne Pierre-Doray . resolved

    Thanks!

    File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.h
    Line 33, Patchset 6: ThreadManager(SequenceManagerFuzzerProcessor* processor);
    Scott Haseley . resolved

    Please fix this WARNING reported by ClangTidy: check: google-explicit-constructor

    single-argument constructors must be marked ...

    check: google-explicit-constructor

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions (https://clang.llvm.org/extra/clang-tidy/checks/google/explicit-constructor.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: google-explicit-constructor` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel` or `mac-clang-tidy-rel`)

    Etienne Pierre-Doray

    Done

    File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.h
    Line 49, Patchset 6: // Note that this doesn't guarantee advancing the thread's clock to |time|.

    // The clock is advanced to the minimum desired time of all the owned threads.
    Scott Haseley . resolved

    Outdated comment?

    Etienne Pierre-Doray

    Fixed.

    File third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.cc
    Line 84, Patchset 6:void ThreadPoolManager::AdvanceClockSynchronouslyImpl() {
    Scott Haseley . resolved

    FYI: this synchronization has historically caused a bunch of ephemeral hangs, e.g. crbug.com/398067546, crbug.com/328676397, crbug.com/396459484, etc. I investigated once (https://issues.chromium.org/issues/328676397#comment4) and found a thread created during a synchronization cycle was causing a deadlock. This change looks so much cleaner (!), and I _think_ should resolve that too.

    ---

    Separately, I'm not sure how much value this fuzzer provides has vs. other testing. Of all the bugs that have been filed in the last few years, the only valid ones have been problems with the fuzzer. But it probably doesn't hurt to keep it around, especially if the synchronization issues are fixed..

    Etienne Pierre-Doray

    I wouldn't be surprised if the former 3 step barrier was the culprit 😊

    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
      Gerrit-Change-Number: 7718282
      Gerrit-PatchSet: 7
      Gerrit-Owner: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Scott Haseley <shas...@chromium.org>
      Gerrit-Comment-Date: Thu, 02 Apr 2026 16:49:02 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Scott Haseley <shas...@chromium.org>
      satisfied_requirement
      open
      diffy

      Etienne Pierre-Doray (Gerrit)

      unread,
      12:49 PM (2 hours ago) 12:49 PM
      to Scott Haseley, Chromium LUCI CQ, chromium...@chromium.org, blink-...@chromium.org, chikamu...@chromium.org, kinuko...@chromium.org, ortuno...@chromium.org, scheduler-...@chromium.org, titoua...@chromium.org

      Etienne Pierre-Doray voted Commit-Queue+2

      Commit-Queue+2
      Open in Gerrit

      Related details

      Attention set is empty
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
      Gerrit-Change-Number: 7718282
      Gerrit-PatchSet: 7
      Gerrit-Owner: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Scott Haseley <shas...@chromium.org>
      Gerrit-Comment-Date: Thu, 02 Apr 2026 16:49:05 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Chromium LUCI CQ (Gerrit)

      unread,
      1:03 PM (2 hours ago) 1:03 PM
      to Etienne Pierre-Doray, Scott Haseley, chromium...@chromium.org, blink-...@chromium.org, chikamu...@chromium.org, kinuko...@chromium.org, ortuno...@chromium.org, scheduler-...@chromium.org, titoua...@chromium.org

      Chromium LUCI CQ submitted the change with unreviewed changes

      Unreviewed changes

      6 is the latest approved patch-set.
      The change was submitted with unreviewed changes in the following files:

      ```
      The name of the file: third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.h
      Insertions: 1, Deletions: 1.

      @@ -30,7 +30,7 @@
      USING_FAST_MALLOC(ThreadManager);

      public:
      - ThreadManager(SequenceManagerFuzzerProcessor* processor);
      + explicit ThreadManager(SequenceManagerFuzzerProcessor* processor);

      ~ThreadManager();

      ```
      ```
      The name of the file: third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.h
      Insertions: 2, Deletions: 3.

      @@ -45,9 +45,8 @@
      bool quit_when_idle_requested) override;
      const char* GetName() const override { return "MockTimeDomain"; }

      - // Advances the mock tick clock of all the threads synchronously.
      - // Note that this doesn't guarantee advancing the thread's clock to |time|.
      - // The clock is advanced to the minimum desired time of all the owned threads.
      + // Advances the mock tick clock of all the threads synchronously, until it
      + // reaches `time`.
      void AdvanceClockSynchronouslyToTime(base::TimeTicks time);

      // Used by a thread to notify the thread manager that it is done executing the
      ```

      Change information

      Commit message:
      [task] Replace SequenceManagerForTest in blink fuzzer ThreadManager

      This CL replaces SequenceManagerForTest::Create() that runs on
      top of a mock task runner by a SequenceManager running directly
      on the thread's message pump. This removes implicit usage of
      deprecated ThreadControllerImpl.
      This uses TimeDomain to drive mock time in ThreadPoolManager
      (with a lot of simplification).
      Bug: 40881604
      Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
      Commit-Queue: Etienne Pierre-Doray <etie...@chromium.org>
      Reviewed-by: Scott Haseley <shas...@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#1609300}
      Files:
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/sequence_manager_fuzzer_processor.cc
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/simple_thread_impl.cc
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/simple_thread_impl.h
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.cc
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.h
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.cc
      • M third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.h
      Change size: L
      Delta: 7 files changed, 99 insertions(+), 180 deletions(-)
      Branch: refs/heads/main
      Submit Requirements:
      • requirement satisfiedCode-Review: +1 by Scott Haseley
      Open in Gerrit
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: merged
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I50982fd8a59368298dd2249732e07826ecd5849d
      Gerrit-Change-Number: 7718282
      Gerrit-PatchSet: 8
      Gerrit-Owner: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
      Gerrit-Reviewer: Etienne Pierre-Doray <etie...@chromium.org>
      Gerrit-Reviewer: Scott Haseley <shas...@chromium.org>
      open
      diffy
      satisfied_requirement
      Reply all
      Reply to author
      Forward
      0 new messages