Fix dangling pointer in AsyncTaskManager
Bug: dawn:2349
Change-Id: I9dfcffb61cc268b7a3eb7eb1021b859b53a17e15
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/179641
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn/native/AsyncTask.h b/src/dawn/native/AsyncTask.h
index 1a8b739..6457b92 100644
--- a/src/dawn/native/AsyncTask.h
+++ b/src/dawn/native/AsyncTask.h
@@ -75,8 +75,7 @@
std::mutex mPendingTasksMutex;
absl::flat_hash_map<WaitableTask*, Ref<WaitableTask>> mPendingTasks;
- // TODO(crbug.com/dawn/2349): Investigate DanglingUntriaged in dawn/native.
- raw_ptr<dawn::platform::WorkerTaskPool, DanglingUntriaged> mWorkerTaskPool;
+ raw_ptr<dawn::platform::WorkerTaskPool> mWorkerTaskPool;
};
} // namespace dawn::native
diff --git a/src/dawn/native/Device.h b/src/dawn/native/Device.h
index 95c8dcd..0165810 100644
--- a/src/dawn/native/Device.h
+++ b/src/dawn/native/Device.h
@@ -606,7 +606,6 @@
Ref<TextureViewBase> mExternalTexturePlaceholderView;
std::unique_ptr<DynamicUploader> mDynamicUploader;
- std::unique_ptr<AsyncTaskManager> mAsyncTaskManager;
Ref<QueueBase> mQueue;
struct DeprecationWarnings;
@@ -634,6 +633,9 @@
Ref<CallbackTaskManager> mCallbackTaskManager;
std::unique_ptr<dawn::platform::WorkerTaskPool> mWorkerTaskPool;
+
+ // Ensure `mAsyncTaskManager` is always destroyed before mWorkerTaskPool
+ std::unique_ptr<AsyncTaskManager> mAsyncTaskManager;
std::string mLabel;
CacheKey mDeviceCacheKey;