Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Commit c62f06a

Browse files
codebyterekhalwa
authored andcommitted
fix: crash on WebWorker destruction (electron#35422)
1 parent 50061f6 commit c62f06a

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

patches/node/feat_add_uv_loop_interrupt_on_io_change_option_to_uv_loop_configure.patch

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ index 7cd3a2a954ff7d70e6ba7a6f7538648841bc54b2..f89b7158218be60ac10e61484a2d5e5e
136136

137137

138138
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
139-
index a88e71c339351f2ebcdd6c3f933fc3b1122910ed..353143e5ebecae598425dc036f4458bb7c43bb0b 100644
139+
index a88e71c339351f2ebcdd6c3f933fc3b1122910ed..46fc03264b6cc1a3a4d8faf5ec5a754fc07c9b6d 100644
140140
--- a/deps/uv/src/unix/loop.c
141141
+++ b/deps/uv/src/unix/loop.c
142142
@@ -217,6 +217,11 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
@@ -151,7 +151,7 @@ index a88e71c339351f2ebcdd6c3f933fc3b1122910ed..353143e5ebecae598425dc036f4458bb
151151
if (option != UV_LOOP_BLOCK_SIGNAL)
152152
return UV_ENOSYS;
153153

154-
@@ -226,3 +231,37 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
154+
@@ -226,3 +231,40 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
155155
loop->flags |= UV_LOOP_BLOCK_SIGPROF;
156156
return 0;
157157
}
@@ -183,6 +183,9 @@ index a88e71c339351f2ebcdd6c3f933fc3b1122910ed..353143e5ebecae598425dc036f4458bb
183183
+ if (r == len)
184184
+ return;
185185
+
186+
+ if (!uv_loop_alive(loop))
187+
+ return;
188+
+
186189
+ if (r == -1)
187190
+ if (errno == EAGAIN || errno == EWOULDBLOCK)
188191
+ return;

shell/common/node_bindings.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "shell/common/mac/main_application_bundle.h"
3838
#include "shell/common/node_includes.h"
3939
#include "third_party/blink/renderer/bindings/core/v8/v8_initializer.h" // nogncheck
40+
#include "third_party/electron_node/src/debug_utils.h"
4041

4142
#if !defined(MAS_BUILD)
4243
#include "shell/common/crash_keys.h"
@@ -136,7 +137,7 @@ void stop_and_close_uv_loop(uv_loop_t* loop) {
136137
break;
137138

138139
DCHECK_EQ(0, uv_loop_alive(loop));
139-
uv_loop_close(loop);
140+
node::CheckedUvLoopClose(loop);
140141
}
141142

142143
bool g_is_initialized = false;

0 commit comments

Comments
 (0)