[Pkg-javascript-devel] Bug#1025736: nodejs: Always segfaults on riscv64

David Ventura davidventura27+debian at gmail.com
Thu Dec 8 10:55:47 GMT 2022


Package: nodejs
Version: 18.12.1+dfsg-2+0.riscv64.1
Severity: grave
Justification: renders package unusable
X-Debbugs-Cc: davidventura27+debian at gmail.com

Dear Maintainer,

   * What led up to the situation?

Trying to execute nodejs in any condition under riscv64.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

I ran `nodejs --help`, but the problem is not limited to the `--help` flag.

   * What was the outcome of this action?

A segmentation fault:
```
root at debian:~/checkout# node --help                                                                                                                                                                                                                                                                                 [159/1912]
Segmentation fault (core dumped)                                                                                                                                                                                                                                                                                              
```


   * What outcome did you expect instead?

Nodejs would execute.

   * Extra notes:

I am testing riscv64 inside qemu:

```
qemu-system-riscv64 -machine virt -cpu sifive-u54 -smp 4 -m 2G -device virtio-blk-device,drive=hd -drive file=overlay.qcow2,if=none,id=hd -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf -kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf -object rng-random,filename=/dev/urandom,id=rng -device virtio-rng-device,rng=rng -append root=LABEL=rootfs console=ttyS0,115200 -netdev type=tap,id=net,ifname=tap0,vhost=on -device virtio-net-pci,netdev=net -nographic
```

Nodejs version (from unreleased/main)

```
root at debian:~/checkout# apt-cache policy nodejs                                                                                                                                                                                                                                                                               
nodejs:                                                                                                                                                                                                                                                                                                                       
  Installed: 18.12.1+dfsg-2+0.riscv64.1                                                                                                                                                                                                                                                                                       
  Candidate: 18.12.1+dfsg-2+0.riscv64.1
  Version table:
 *** 18.12.1+dfsg-2+0.riscv64.1 500
        500 http://deb.debian.org/debian-ports unreleased/main riscv64 Packages 
        100 /var/lib/dpkg/status
```

Configured cpuinfo:
```
root at debian:~/checkout# cat /proc/cpuinfo 
processor       : 0
hart            : 0
isa             : rv64imafdc
mmu             : sv57

processor       : 1
hart            : 1
isa             : rv64imafdc
mmu             : sv57

processor       : 2
hart            : 2
isa             : rv64imafdc
mmu             : sv57

processor       : 3
hart            : 3
isa             : rv64imafdc
mmu             : sv57
```

Captured backtrace with gdb:

```
root at debian:~/checkout# gdb node -c /tmp/core-node.17623.debian.1670493754                                                                                     
GNU gdb (Debian 12.1-4) 12.1                                                                                                                                   
Reading symbols from node...                                                                                                                                   
(No debugging symbols found in node)                              
[New LWP 17623]                                                                                                                                                
[New LWP 17624]                                                                                                                                                
[New LWP 17625]                                        
[New LWP 17627]                                                                                                                                                
[New LWP 17626]                     
[New LWP 17628]                                                  
[Thread debugging using libthread_db enabled]                                                                                                                  
Using host libthread_db library "/lib/riscv64-linux-gnu/libthread_db.so.1".
Core was generated by `node --help'.                                        
Program terminated with signal SIGSEGV, Segmentation fault.                  
#0  0x00ffffff99fcdab2 in v8::internal::Code::RelocateFromDesc(v8::internal::ByteArray, v8::internal::Heap*, v8::internal::CodeDesc const&) () from /lib/riscv64-linux-gnu/libnode.so.108
[Current thread is 1 (Thread 0xffffff98acaec0 (LWP 17623))]                                                                                                    
(gdb) bt                                                                                                                                                       
#0  0x00ffffff99fcdab2 in v8::internal::Code::RelocateFromDesc(v8::internal::ByteArray, v8::internal::Heap*, v8::internal::CodeDesc const&) () from /lib/riscv64-linux-gnu/libnode.so.108
#1  0x00ffffff99e9d980 in v8::internal::Factory::CodeBuilder::BuildInternal(bool) () from /lib/riscv64-linux-gnu/libnode.so.108
#2  0x00ffffff99d6538e in v8::internal::baseline::BaselineCompiler::Build(v8::internal::LocalIsolate*) () from /lib/riscv64-linux-gnu/libnode.so.108
#3  0x00ffffff99d74296 in v8::internal::GenerateBaselineCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>) () from /lib/riscv64-linux-gnu/libnode.so.108
#4  0x00ffffff99db66f6 in v8::internal::Compiler::CompileSharedWithBaseline(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*) () from /lib/riscv64-linux-gnu/libnode.so.108
#5  0x00ffffff99db6b7a in v8::internal::Compiler::CompileBaseline(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*) () from /lib/riscv64-linux-gnu/libnode.so.108
#6  0x00ffffff99d63a5a in v8::internal::baseline::BaselineBatchCompiler::CompileBatch(v8::internal::Handle<v8::internal::JSFunction>) () from /lib/riscv64-linux-gnu/libnode.so.108
#7  0x00ffffff99e5b1b2 in v8::internal::TieringManager::OnInterruptTick(v8::internal::Handle<v8::internal::JSFunction>) () from /lib/riscv64-linux-gnu/libnode.so.108
#8  0x00ffffff9a1b7a70 in v8::internal::Runtime_BytecodeBudgetInterruptWithStackCheck(int, unsigned long*, v8::internal::Isolate*) () from /lib/riscv64-linux-gnu/libnode.so.108
#9  0x00ffffff99bf68dc in ?? () from /lib/riscv64-linux-gnu/libnode.so.108
(gdb)                                                                                                                                                                                                                                                                                                                         

```

This is _likely_ unrelated, but I faced a "similar" (stack-related issues) bug with golang, patch:

https://go-review.googlesource.com/c/go/+/409055/6/src/runtime/lfstack_64bit.go#40

bug report:

https://github.com/golang/go/issues/54104

Thanks,
David


-- System Information:
Debian Release: bookworm/sid
  APT prefers unreleased
  APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: riscv64

Kernel: Linux 6.0.0-5-riscv64 (SMP w/4 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=C.UTF-8 (charmap=locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages nodejs depends on:
ii  libc6       2.36-6
ii  libnode108  18.12.1+dfsg-2+0.riscv64.1

Versions of packages nodejs recommends:
ii  ca-certificates  20211016
ii  nodejs-doc       18.12.1+dfsg-2+0.riscv64.1

Versions of packages nodejs suggests:
pn  npm  <none>

-- debconf information excluded



More information about the Pkg-javascript-devel mailing list