Hi,

On 2026-10-24 11:24, Aurelien Jarno wrote:
> On 2026-10-23 21:25, Aurelien Jarno wrote:
> > Source: nodejs
> > Version: 24.22.0+dfsg+~cs24.19.2-2
> > Severity: serious
> > Tags: ftbfs upstream
> > Justification: fails to build from source (but built successfully in the 
> > past)
> > X-Debbugs-Cc: [email protected]
> > User: [email protected]
> > Usertags: riscv64
> > 
> > Dear maintainer,
> > 
> > As you surely have noticed, the latest version of nodejs fails to build
> > on riscv64. It fails with:
> 
> ...
> 
> > I have rebuilt version 24.21.0+dfsg+~cs24.13.4-1 in the same
> > environment, and it works fine, so the issue is not due to a dependency.
> > 
> > I have also been able to reproduce the issue with upstream tag v24.22.0
> > as well as v24.22.1. On the other hand upstream tag v24.21.0 works fine,
> > so the issue is not due to a debian change.
> > 
> > I have started bisecting, but it will take some time.
> 
> Here is the result:
> 
> | fb0d0ca28993802d67360edc84d467fe3ccdc20b is the first 'bad' commit
> | commit fb0d0ca28993802d67360edc84d467fe3ccdc20b (HEAD)
> | Author: Ruan Gustavo <[email protected]>
> | Date:   Wed Sep 2 22:00:20 2026 -0300
> | 
> |     deps: V8: backport 0b94a9fd23ba
> | 
> |     Original commit message:
> | 
> |         [leaptiering] Fix BaselineOutOfLinePrologue builtin
> | 
> |         ... which tried to preserve kJavaScriptCallDispatchHandleRegister 
> even
> |         on configurations where it's not used which resulted in a random 
> value
> |         on the stack discoverable by GC.
> |         This issue triggered only on non-sandbox configuration with enabled
> |         leaptiering.
> | 
> |         Drive-by: fix MacroAssembler::GenerateTailCallToReturnedCode() on 
> riscv
> |         port which wasn't preserving dispatch handle as all the other ports 
> do.
> | 
> |         Bug: 42204201
> |         Fixed: 413769394
> | 
> |         Change-Id: If146b0b7a6cf972ed5a881142f40980774f19cba
> |         Reviewed-on: 
> https://chromium-review.googlesource.com/c/v8/v8/+/6587010
> |         Commit-Queue: Igor Sheludko <[email protected]>
> |         Reviewed-by: Olivier Flückiger <[email protected]>
> |         Cr-Commit-Position: refs/heads/main@{#100512}
> | 
> |     Node.js 24 builds V8 with leaptiering enabled and the sandbox disabled,
> |     so V8_JS_LINKAGE_INCLUDES_DISPATCH_HANDLE is not defined and the JS
> |     calling convention does not carry the dispatch handle register (x4 on
> |     arm64). BaselineOutOfLinePrologue and GenerateTailCallToReturnedCode
> |     still pushed that register as a tagged slot of an INTERNAL frame, so
> |     whatever value the caller left there is dereferenced by
> |     ClearStaleLeftTrimmedPointerVisitor during mark-compact root scanning
> |     and crashes the process with SIGSEGV (seen as jest workers dying).
> | 
> |     Refs: 
> https://github.com/v8/v8/commit/0b94a9fd23ba5f59b3f675fb04d60a9b0102e27d
> |     Fixes: https://github.com/nodejs/node/issues/62393
> |     PR-URL: https://github.com/nodejs/node/pull/65753
> |     Reviewed-By: Richard Lau <[email protected]>
> | 
> |  common.gypi                                            |  2 +-
> |  deps/v8/src/builtins/arm64/builtins-arm64.cc           |  3 ++-
> |  deps/v8/src/builtins/loong64/builtins-loong64.cc       |  5 +++--
> |  deps/v8/src/builtins/mips64/builtins-mips64.cc         |  5 +++--
> |  deps/v8/src/builtins/riscv/builtins-riscv.cc           |  7 +++++--
> |  deps/v8/src/builtins/x64/builtins-x64.cc               |  5 +++--
> |  deps/v8/src/codegen/arm64/macro-assembler-arm64.cc     | 11 ++++++-----
> |  deps/v8/src/codegen/loong64/macro-assembler-loong64.cc |  5 +++--
> |  deps/v8/src/codegen/mips64/macro-assembler-mips64.cc   |  5 +++--
> |  deps/v8/src/codegen/riscv/macro-assembler-riscv.cc     | 18 
> +++++++++++++++---
> |  deps/v8/src/codegen/x64/macro-assembler-x64.cc         |  5 +++--
> |  11 files changed, 47 insertions(+), 24 deletions(-)
> 
> I have tested that reverting that commit on upstream v24.22.1 or on the 
> Debian package fix the issue. I still need to understand what is broken, 
> any help is welcome.

I have found that the following v8 commit is missing from the backport:
https://chromium.googlesource.com/v8/v8.git/+/ec2f506f97dfbb5fa19e4fe9103965a3c94690af

Backporting it to the embedded v8 copy fixes the issue.

Regards
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
[email protected]                     http://aurel32.net

-- 
Pkg-javascript-devel mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel

Reply via email to