fix: libuv hang when nodeIntegrationInSubframes enabled (#27582)

This commit is contained in:
Shelley Vohr 2021-02-17 03:42:28 +00:00 committed by GitHub
parent 980b32fce7
commit 642d6fca91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 2 deletions

View file

@ -531,6 +531,18 @@ void NodeBindings::LoadEnvironment(node::Environment* env) {
}
void NodeBindings::PrepareMessageLoop() {
#if !defined(OS_WIN)
int handle = uv_backend_fd(uv_loop_);
#else
HANDLE handle = uv_loop_->iocp;
#endif
// If the backend fd hasn't changed, don't proceed.
if (handle == handle_)
return;
handle_ = handle;
// Add dummy handle for libuv, otherwise libuv would quit when there is
// nothing to do.
uv_async_init(uv_loop_, dummy_uv_handle_.get(), nullptr);

View file

@ -159,6 +159,12 @@ class NodeBindings {
// Isolate data used in creating the environment
node::IsolateData* isolate_data_ = nullptr;
#if defined(OS_WIN)
HANDLE handle_;
#else
int handle_ = -1;
#endif
base::WeakPtrFactory<NodeBindings> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(NodeBindings);