fix: libuv hang when nodeIntegrationInSubframes enabled (#27881)

This commit is contained in:
Shelley Vohr
2021-02-24 09:01:05 +00:00
committed by GitHub
parent c6f8625947
commit e7d7c66636
3 changed files with 19 additions and 2 deletions

View File

@@ -493,6 +493,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_;
DISALLOW_COPY_AND_ASSIGN(NodeBindings);