diff --git a/libexec/extract-node b/libexec/extract-node index 61b5b2a..2fed7c6 100755 --- a/libexec/extract-node +++ b/libexec/extract-node @@ -32,3 +32,4 @@ cd "${src}/node-v${version}" patch -p1 < "${top}"/patch/v8-std-is-trivially-destructible.patch patch -p1 < "${top}"/patch/v8-disable-madv-dontfork.patch patch -p1 < "${top}"/patch/v8-disable-pkey.patch +patch -p1 < "${top}"/patch/v8-debug-flags-hang.patch diff --git a/patch/v8-debug-flags-hang.patch b/patch/v8-debug-flags-hang.patch new file mode 100644 index 0000000..ddfb218 --- /dev/null +++ b/patch/v8-debug-flags-hang.patch @@ -0,0 +1,26 @@ +diff --git a/deps/v8/src/flags/flags-impl.h b/deps/v8/src/flags/flags-impl.h +index d2d440c026..111b9b5b9c 100644 +--- a/deps/v8/src/flags/flags-impl.h ++++ b/deps/v8/src/flags/flags-impl.h +@@ -5,6 +5,8 @@ + #ifndef V8_FLAGS_FLAGS_IMPL_H_ + #define V8_FLAGS_FLAGS_IMPL_H_ + ++#include ++ + #include "src/base/macros.h" + #include "src/base/optional.h" + #include "src/base/vector.h" +@@ -91,9 +93,12 @@ struct Flag { + #ifdef DEBUG + bool ImpliedBy(const void* ptr) const { + const Flag* current = this->implied_by_ptr_; ++ std::unordered_set visited_flags; + while (current != nullptr) { ++ visited_flags.insert(current); + if (current->PointsTo(ptr)) return true; + current = current->implied_by_ptr_; ++ if (visited_flags.contains(current)) break; + } + return false; + }