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. 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
