Closed
Description
Details
node start fails always with std::bad_alloc
.
This is a emulated virtual machine, so the problem probably lies there, but maybe you could help somehow.
I have a macOS on M1 Arm silicon and I am running emulated x86_64 Debian Linux guest on Qemu. There is 4GB memory on VM and the node process does not allocate much. I tried with node versions 10-18.
$ gdb node
(gdb) r --max_old_space_size=3000
Starting program: /usr/bin/node --max_old_space_size=3000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff329d700 (LWP 2500)]
[New Thread 0x7ffff2a9c700 (LWP 2501)]
[New Thread 0x7ffff229b700 (LWP 2502)]
[New Thread 0x7ffff1a9a700 (LWP 2503)]
[New Thread 0x7ffff1299700 (LWP 2504)]
[New Thread 0x7ffff0a98700 (LWP 2505)]
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Thread 1 "node" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff5b01537 in __GI_abort () at abort.c:79
#2 0x00007ffff4ffb7ec in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff5006966 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff50069d1 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff5006c65 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff4ffdf0f in std::__throw_bad_alloc() () from /lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff68136e1 in ?? () from /lib/x86_64-linux-gnu/libnode.so.72
#8 0x00007ffff6819603 in v8::internal::Heap::ProcessPretenuringFeedback() () from /lib/x86_64-linux-gnu/libnode.so.72
#9 0x00007ffff682de47 in v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) ()
from /lib/x86_64-linux-gnu/libnode.so.72
#10 0x00007ffff682ec96 in v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) ()
from /lib/x86_64-linux-gnu/libnode.so.72
#11 0x00007ffff6830e1c in v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::Allocatio/
#12 0x00007ffff6830e84 in v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::Allocati/
#13 0x00007ffff67f73af in v8::internal::Factory::AllocateRawArray(int, v8::internal::AllocationType) () from /lib/x86_64-linux-gnu/libnode.so.72
#14 0x00007ffff67f7828 in v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::RootIndex, int, v8::internal::Object, v8::internal::AllocationType) ()
from /lib/x86_64-linux-gnu/libnode.so.72
#15 0x00007ffff6a2bf33 in v8::internal::BaseNameDictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::CollectKeysTo(v8::internal::Handl/
#16 0x00007ffff69e5a4c in v8::internal::KeyAccumulator::CollectOwnPropertyNames(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal:/
#17 0x00007ffff69e5cde in v8::internal::KeyAccumulator::CollectOwnKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject/
#18 0x00007ffff69e69f3 in v8::internal::KeyAccumulator::CollectKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSReceiver>/
#19 0x00007ffff69e6b85 in v8::internal::FastKeyAccumulator::GetKeysSlow(v8::internal::GetKeysConversion) () from /lib/x86_64-linux-gnu/libnode.so.72
#20 0x00007ffff69e6c6d in v8::internal::KeyAccumulator::GetKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::KeyCollectionMode, v8::internal::Pro/
#21 0x00007ffff6b3f597 in v8::internal::Runtime_ObjectGetOwnPropertyNames(int, unsigned long*, v8::internal::Isolate*) () from /lib/x86_64-linux-gnu/libnode.so.72
#22 0x00007ffff70e8d99 in ?? () from /lib/x86_64-linux-gnu/libnode.so.72
#23 0x00007fffffffd638 in ?? ()
#24 0x00007fffffffd5c0 in ?? ()
#25 0x0000000000000006 in ?? ()
#26 0x00007fffffffd628 in ?? ()
#27 0x00007ffff70b7f08 in ?? () from /lib/x86_64-linux-gnu/libnode.so.72
#28 0x00002537fa0802f9 in ?? ()
#29 0x00007fffffffd628 in ?? ()
#30 0x00002335c8382211 in ?? ()
#31 0x000018be47d4d299 in ?? ()
#32 0x00000000000000fc in ?? ()
#33 0x0000000000000001 in ?? ()
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb)
[1]+ Stopped gdb node
jarkkosonninen@lima-debian:/$ ps axu |grep node
jarkkos+ 2472 8.5 3.4 450632 139688 pts/0 Tl 06:10 0:25 gdb node
jarkkos+ 2499 0.7 0.7 583644 30500 pts/0 tl 06:14 0:00 /usr/bin/node --max_old_space_size=3000
jarkkosonninen@lima-debian:/$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 187Mi 2.4Gi 4.0Mi 1.3Gi 3.4Gi
Swap: 0B 0B 0B
Node.js version
$ node -v
v12.22.12
Example code
No response
Operating system
$ uname -a
Linux lima-debian 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
/opt/homebrew/bin/qemu-system-x86_64 -m 4096 -cpu qemu64 -machine q35,vmport=off -accel tcg,thread=multi,tb-size=512 -global ICH9-LPC.disable_s3=1 -smp 4,sockets=1,cores=4,threads=1 -drive if=pflash,format=raw,readonly=on,file=/opt/homebrew/share/qemu/edk2-x86_64-code.fd -boot order=c,splash-time=0,menu=on -drive file=/Users/jarkkosonninen/.lima/debian/diffdisk,if=virtio,discard=on -drive id=cdrom0,if=none,format=raw,readonly=on,file=/Users/jarkkosonninen/.lima/debian/cidata.iso -device virtio-scsi-pci,id=scsi0 -device scsi-cd,bus=scsi0.0,drive=cdrom0 -netdev user,id=net0,net=192.168.5.0/24,dhcpstart=192.168.5.15,hostfwd=tcp:127.0.0.1:51391-:22 -device virtio-net-pci,netdev=net0,mac=52:55:55:c6:37:29 -device virtio-rng-pci -display none -device virtio-vga -device virtio-keyboard-pci -device virtio-mouse-pci -device qemu-xhci,id=usb-bus -parallel none -chardev socket,id=char-serial,path=/Users/jarkkosonninen/.lima/debian/serial.sock,server=on,wait=off,logfile=/Users/jarkkosonninen/.lima/debian/serial.log -serial chardev:char-serial -chardev socket,id=char-qmp,path=/Users/jarkkosonninen/.lima/debian/qmp.sock,server=on,wait=off -qmp chardev:char-qmp -name lima-debian -pidfile /Users/jarkkosonninen/.lima/debian/qemu.pid
Scope
runtime
Module and version
Not applicable.
Metadata
Metadata
Assignees
Labels
No labels