Node.js source code build giving segmentation fault on ARM

12,096

I had this problem too on a few different ARM computers. Compiling without the snapshot feature worked for me. Snapshot is a V8 feature that allows node to start faster, and there seems to be a bug for ARM.

./configure --without-snapshot
make
sudo make install

http://www.armhf.com/index.php/node-js-for-the-beaglebone-black/

Share:
12,096
cyroxx
Author by

cyroxx

Updated on June 03, 2022

Comments

  • cyroxx
    cyroxx almost 2 years

    tl;dr: I tried to install node.js on my ARMv7-based Cubox running Ubuntu 12.10 (quantal). When compiling node.js from source (see "Second attempt" below), node produces a segmentation fault. What can I do here?

    First attempt

    First of all, I tried to install node.js via the package manager, following the instructions for Ubuntu that are given here: Installing Node.js via package manager: Ubuntu, Mint

    Adding the repository mentioned there using sudo add-apt-repository ppa:chris-lea/node.js seems to work fine:

    You are about to add the following PPA to your system:
     Evented I/O for V8 javascript. Node's goal is to provide an easy way to build scalable network programs
     More info: https://launchpad.net/~chris-lea/+archive/node.js
    Press [ENTER] to continue or ctrl-c to cancel adding it
    
    gpg: keyring `/tmp/tmpp0owib/secring.gpg' created
    gpg: keyring `/tmp/tmpp0owib/pubring.gpg' created
    gpg: requesting key C7917B12 from hkp server keyserver.ubuntu.com
    gpg: /tmp/tmpp0owib/trustdb.gpg: trustdb created
    gpg: key C7917B12: public key "Launchpad chrislea" imported
    gpg: Total number processed: 1
    gpg:               imported: 1  (RSA: 1)
    OK
    

    However, sudo apt-get install nodejs gives me the error:

    E: Unable to locate package nodejs
    

    I assume this is because I have an ARM-based system. As far as I can tell from the package details, the repo only contains builds for i386 and amd64. Is my assumption right?

    Second attempt

    So my next attempt was to install node.js from source. I used the instructions given in the following gist: Node.js and NPM in 30 seconds. Everything seems to work, including make install. But the execution of the install.sh script in the last line of the gist fails since node produces a segmentation fault. Now I wonder what I can do to properly install node.js on my machine?

    In order to illustrate my problem, here is some output:

    install.sh output

    This is the ouput of install.sh after running make install, as described in the gist installation instructions mentioned above.

    cyroxx@cubox:~/node-latest-install$ curl https://npmjs.org/install.sh | sh
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  7882  100  7882    0     0  11251      0 --:--:-- --:--:-- --:--:-- 14984
    tar=/bin/tar
    version:
    tar (GNU tar) 1.26
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by John Gilmore and Jay Fenlason.
    install npm@latest
    fetching: http://registry.npmjs.org/npm/-/npm-1.2.21.tgz
    Segmentation fault
    Segmentation fault
    You need node  to run this program.
    node --version reports: v0.10.7
    Please upgrade node before continuing.
    It failed
    

    node output

    cyroxx@cubox:~/node-latest-install$ node
    Segmentation fault
    

    make Debug build

    Running make with BUILDTYPE=Debug produces this output:

    cyroxx@cubox:~/node-latest-install$ make -C out BUILDTYPE=Debug
    make: Entering directory `/home/cyroxx/node-latest-install/out'
      CXX(target) /home/cyroxx/node-latest-install/out/Debug/obj.target/v8_base/deps/v8/src/arm/stub-cache-arm.o
    ../deps/v8/src/arm/stub-cache-arm.cc: In function 'void v8::internal::ProbeTable(v8::internal::Isolate*, v8::internal::MacroAssembler*, v8::internal::Code::Flags, v8::internal::StubCache::Table, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register)':
    ../deps/v8/src/arm/stub-cache-arm.cc:106:15: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
    cc1plus: all warnings being treated as errors
    make: *** [/home/cyroxx/node-latest-install/out/Debug/obj.target/v8_base/deps/v8/src/arm/stub-cache-arm.o] Error 1
    make: Leaving directory `/home/cyroxx/node-latest-install/out'
    

    What's wrong here? Is this a bug in the ARM implementation of V8? Maybe any compiler flags that are not (properly) set? Anything else? I am totally stuck.

  • CharlesS
    CharlesS almost 11 years
    This is the answer. Thanks.
  • Chris Oei
    Chris Oei almost 11 years
    Thanks to Jeremy. "nvm install 0.10 --without-snapshot" built a working 0.10.12 for me on my Samsung chromebook.
  • Brad
    Brad over 10 years
    Worked for me under Debian/wheezy on an Android chroot.
  • Alexey Zimarev
    Alexey Zimarev about 10 years
    Worked on OlinuXino A10
  • dragonloverlord
    dragonloverlord over 9 years
    Thanks it worked on my samsung chromebook for node version o.10.32