fix: gin_helper::Promise in GPUInfoManager must be destroyed before destroying Node/V8 (#46434)

* fix: gin_helper::Promise in GPUInfoManager must be destroyed before destroying Node/V8

* fix: use CleanedUpAtExit to control the lifetime of GPUInfoManager
This commit is contained in:
yangllu 2025-04-04 01:12:12 +08:00 committed by GitHub
parent 0e3246e20d
commit e46b0c8ddc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 2 deletions

View file

@ -17,7 +17,9 @@
namespace electron {
GPUInfoManager* GPUInfoManager::GetInstance() {
return base::Singleton<GPUInfoManager>::get();
// will be deleted by CleanedUpAtExit::DoCleanup
static GPUInfoManager* instance = new GPUInfoManager();
return instance;
}
GPUInfoManager::GPUInfoManager()

View file

@ -11,6 +11,7 @@
#include "content/browser/gpu/gpu_data_manager_impl.h" // nogncheck
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/gpu_data_manager_observer.h"
#include "shell/common/gin_helper/cleaned_up_at_exit.h"
namespace gin_helper {
template <typename T>
@ -20,7 +21,8 @@ class Promise;
namespace electron {
// GPUInfoManager is a singleton used to manage and fetch GPUInfo
class GPUInfoManager : private content::GpuDataManagerObserver {
class GPUInfoManager : private content::GpuDataManagerObserver,
public gin_helper::CleanedUpAtExit {
public:
static GPUInfoManager* GetInstance();