From bbbc96880a6ee4c57078287837362925f5dacf55 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 2 Feb 2021 22:21:10 +0000 Subject: [PATCH] Revert "Fix crash in FilePathWatcherKQueue." This reverts commit 8cb19bafcdddecdbfc1e168f8426558d6647a677. Reason for revert: Not the right fix. Original change's description: > Fix crash in FilePathWatcherKQueue. > > It's possible that FileDescriptorWatcher may have a task queued up to > run FilePathWatcherKQueue::OnKQueueReadable after a call to > FilePathWatcherKQueue::Cancel. In this case, OnKQueueReadable would find > that its events_ vector is empty and the queue file descriptor is > -1. This here fix invalidates outstanding WeakPtrs in Cancel so that any > queued tasks don't run. > > Bug: 1156603 > Change-Id: Ia3b644db49bea1a145cb0da91451f563f057d824 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2661337 > Auto-Submit: Greg Thompson > Commit-Queue: Wez > Reviewed-by: Wez > Cr-Commit-Position: refs/heads/master@{#848881} TBR=wez@chromium.org,gab@chromium.org,grt@chromium.org,jdoerrie@chromium.org,chromium-scoped@luci-project-accounts.iam.gserviceaccount.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 1156603 Change-Id: I0b68dcc938b6be9ce10dde752418226a3d1ae15f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2668931 Reviewed-by: Greg Thompson Reviewed-by: Gabriel Charette Commit-Queue: Greg Thompson Cr-Commit-Position: refs/heads/master@{#849791} --- base/files/file_path_watcher_kqueue.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/base/files/file_path_watcher_kqueue.cc b/base/files/file_path_watcher_kqueue.cc index 5fa2e4f4b95c84..8cf4bb2b90aa07 100644 --- a/base/files/file_path_watcher_kqueue.cc +++ b/base/files/file_path_watcher_kqueue.cc @@ -318,10 +318,6 @@ void FilePathWatcherKQueue::Cancel() { if (!is_cancelled()) { set_cancelled(); kqueue_watch_controller_.reset(); - // There may be pending tasks on this sequence to handle previously-observed - // changes on the queue's file descriptor. Invalidate them so that they - // never run. - weak_factory_.InvalidateWeakPtrs(); if (IGNORE_EINTR(close(kqueue_)) != 0) { DPLOG(ERROR) << "close kqueue"; }