From b2a45fd677b323812fa84bdca460fdc4dd63258b Mon Sep 17 00:00:00 2001 From: Levi Zim Date: Thu, 5 Feb 2026 11:33:29 +0800 Subject: [PATCH] addpatch: nodejs-lts-jod 22.22.0-1 - Backport chromium-review.googlesource.com/c/v8/v8/+/7540554 to fix the long-standing nodejs heisenbug Sporadic Nodejs segfault on sg2042 revyos/revyos#27. Upstream PR: https://github.com/nodejs/node/pull/61688 - `--nocheck` is needed. There are test failures. - Patch configure to accept python 3.14. --- nodejs-lts-jod/configure-py314.diff | 11 +++++ nodejs-lts-jod/riscv-v8-fix-sp.patch | 61 ++++++++++++++++++++++++++++ nodejs-lts-jod/riscv64.patch | 27 ++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 nodejs-lts-jod/configure-py314.diff create mode 100644 nodejs-lts-jod/riscv-v8-fix-sp.patch create mode 100644 nodejs-lts-jod/riscv64.patch diff --git a/nodejs-lts-jod/configure-py314.diff b/nodejs-lts-jod/configure-py314.diff new file mode 100644 index 000000000..1761d0d17 --- /dev/null +++ b/nodejs-lts-jod/configure-py314.diff @@ -0,0 +1,11 @@ +--- configure.orig 2026-01-12 22:55:23.000000000 +0000 ++++ configure 2026-02-04 05:27:17.040677777 +0000 +@@ -23,7 +23,7 @@ + from distutils.spawn import find_executable as which + + print('Node.js configure: Found Python {}.{}.{}...'.format(*sys.version_info)) +-acceptable_pythons = ((3, 13), (3, 12), (3, 11), (3, 10), (3, 9), (3, 8)) ++acceptable_pythons = ((3, 14), (3, 13), (3, 12), (3, 11), (3, 10), (3, 9), (3, 8)) + if sys.version_info[:2] in acceptable_pythons: + import configure + else: diff --git a/nodejs-lts-jod/riscv-v8-fix-sp.patch b/nodejs-lts-jod/riscv-v8-fix-sp.patch new file mode 100644 index 000000000..0116e687a --- /dev/null +++ b/nodejs-lts-jod/riscv-v8-fix-sp.patch @@ -0,0 +1,61 @@ +From b7ecaa8f7e903f7cf5190aa1e3150e739fffa1cc Mon Sep 17 00:00:00 2001 +From: Vivian Wang +Date: Tue, 3 Feb 2026 16:46:02 +0800 +Subject: [PATCH] deps: V8: backport 6a0a25abaed3 + +Original commit message: + + [riscv] Fix sp handling in MacroAssembler::LeaveFrame + + Keep sp <= fp to ensure that data right above fp doesn't get clobbered + by an inopportune signal and its handler. + + Such clobbering can happen in e.g. Node.js when JIT-compiled code is + interrupted by a SIGCHLD handler. + + Bug: None + Change-Id: Ief0836032ada7942e89f081f7605f61632c4d414 + Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7540554 + Reviewed-by: Ji Qiu + Commit-Queue: Yahan Lu (LuYahan) + Reviewed-by: Rezvan Mahdavi Hezaveh + Cr-Commit-Position: refs/heads/main@{#105069} + +Refs: https://github.com/v8/v8/commit/6a0a25abaed397f83eb0d92e4b33a5e18204f8bc +Co-authored-by: kxxt +--- + deps/v8/AUTHORS | 1 + + deps/v8/src/codegen/riscv/macro-assembler-riscv.cc | 3 ++- + 3 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS +index 54fb45992db..93b3d9d5b23 100644 +--- a/deps/v8/AUTHORS ++++ b/deps/v8/AUTHORS +@@ -282,6 +282,7 @@ Vadim Gorbachev + Varun Varada + Victor Costan + Victor Polevoy ++Vivian Wang + Vlad Burlik + Vladimir Krivosheev + Vladimir Shutoff +diff --git a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc +index fd5e97339b4..dc4e3aafcdb 100644 +--- a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc ++++ b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc +@@ -6036,9 +6036,10 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) { + + void MacroAssembler::LeaveFrame(StackFrame::Type type) { + ASM_CODE_COMMENT(this); +- addi(sp, fp, 2 * kSystemPointerSize); ++ Move(sp, fp); + LoadWord(ra, MemOperand(fp, 1 * kSystemPointerSize)); + LoadWord(fp, MemOperand(fp, 0 * kSystemPointerSize)); ++ AddWord(sp, sp, 2 * kSystemPointerSize); + } + + void MacroAssembler::EnterExitFrame(int stack_space, +-- +2.53.0 + diff --git a/nodejs-lts-jod/riscv64.patch b/nodejs-lts-jod/riscv64.patch new file mode 100644 index 000000000..bba93dd38 --- /dev/null +++ b/nodejs-lts-jod/riscv64.patch @@ -0,0 +1,27 @@ +--- PKGBUILD ++++ PKGBUILD +@@ -19,10 +19,14 @@ options=(!lto) + source=( + "https://nodejs.org/dist/v${pkgver}/node-v${pkgver}.tar.xz" + update-icu-tests.patch ++ configure-py314.diff ++ riscv-v8-fix-sp.patch + ) + # https://nodejs.org/download/release/latest-jod/SHASUMS256.txt.asc + sha256sums=('4c138012bb5352f49822a8f3e6d1db71e00639d0c36d5b6756f91e4c6f30b683' +- '43da0fb7469e34a239b2711876475f303a4012151e44f72e636a5a7fcf21bff8') ++ '43da0fb7469e34a239b2711876475f303a4012151e44f72e636a5a7fcf21bff8' ++ '9eefe84d90cedffd47878cfd4f027d18fd8724ce2f798ba11cc2b3b861d1f10d' ++ 'c3ecf573ef238c4d97fb051eefe0d4d47cdac8d6282f13cad69b04ec564460af') + + _set_flags() { + # /usr/lib/libnode.so uses malloc_usable_size, which is incompatible with fortification level 3 +@@ -32,6 +36,8 @@ _set_flags() { + + prepare() { + cd node-v${pkgver} ++ patch -Np0 -i ../configure-py314.diff ++ patch -Np1 -i ../riscv-v8-fix-sp.patch + # Update ICU tests https://github.com/nodejs/node/pull/60523 + patch -Np1 -i ../update-icu-tests.patch + }