New: nodejs 0.12.7 - npm crashes (seg core dump)
https://bugs.busybox.net/show_bug.cgi?id=8296
Summary: nodejs 0.12.7 - npm crashes (seg core dump)
Product: buildroot
Version: unspecified
Platform: All
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P5
Component: Other
AssignedTo: unassigned at buildroot.uclibc.org
ReportedBy: pfriedland at gmail.com
CC: buildroot at uclibc.org
Estimated Hours: 0.0
tested with (armv7 and x86_64)
using a clone from git repository today 8/17/2015
npm built with nodejs 0.12.7 core dumps nodejs 0.12.7 starts ok
npm built with nodejs 0.10.40 works fine nodejs 0.10.40 works fine
Signature · 3 lines
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
https://bugs.busybox.net/show_bug.cgi?id=8296
Martin <[email protected]> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |martin at barkynet.com
AssignedTo|unassigned at buildroot.uclibc |martin at barkynet.com
|.org |Signature · 3 lines
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #1 from Martin <[email protected]> 2015-12-01 21:42:25 UTC --- I have managed to reproduce this issue using qemu_x86_64_defconfig in the 2015.11 release. My initial tests seem to show it's related to using uclibc.
To reproduce the npm crash do the following:
1) start with qemu_x86_64_defconfig
2) add the C++ compiler
3) enable node.js version 0.12.7
4) enable npm for the target
5) build and run in qemu as per the instructions in board/qemu/x86_64/readme.txt
6) login and type npm -v, it will crash.
Changing the toolchain from uclibc to glibc causes npm to start working. So as a work around use glibc. I'll try and narrow down the issue further.
Signature · 3 lines
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #2 from Martin <[email protected]> 2015-12-01 21:49:49 UTC --- Created attachment 6236
--> https://bugs.busybox.net/attachment.cgi?id=6236qemu_x86_64_npm_crash_defconfig
qemu_x86_64_npm_crash_defconfig is modified from qemu_x86_64_defconfig. It has the C++ compiler added, node.js and npm for the target. Running npm on the target will crash.
Set BR2_TOOLCHAIN_BUILDROOT_GLIBC=y to test using glibc where npm will work.
Signature · 3 lines
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #3 from Thomas Petazzoni <[email protected]> 2015-12-01 22:04:34 UTC --- Thanks for the investigation. Can you rebuild with debugging symbols, and get a
core dump, to see where we are crashing?
Signature · 3 lines
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
Thomas,
Quoted 5 lines · On 1 December 2015 at 22:04, <[email protected]> wrote:
https://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #3 from Thomas Petazzoni <[email protected]> 2015-12-01 22:04:34 UTC --- Thanks for the investigation. Can you rebuild with debugging symbols, and get a
core dump, to see where we are crashing?
https://bugs.busybox.net just died :( I was in the middle of posting a back trace form the core dump and bugzilla stopped working. It gives a perl error about DateTime.pm missing.
Any ideas?
Thanks
Martin
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
Dear Martin Bark,
Quoted 10 lines · Martin Bark
Quoted 5 lines · On 1 December 2015 at 22:04, <[email protected]> wrote:
https://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #3 from Thomas Petazzoni <[email protected]> 2015-12-01 22:04:34 UTC --- Thanks for the investigation. Can you rebuild with debugging symbols, and get a
core dump, to see where we are crashing?https://bugs.busybox.net just died :( I was in the middle of posting a back trace form the core dump and bugzilla stopped working. It gives a perl error about DateTime.pm missing.
Can you try again?
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to Martin BarkQuoted 3 lines · Martin Bark
https://bugs.busybox.net just died :( I was in the middle of posting a back trace form the core dump and bugzilla stopped working. It gives a perl error about DateTime.pm missing.
it's fine now. i was in the middle of updating a lot of software and
forgot about the immediate impact on bugzilla.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20151202/ec4e0e6e/attachment.asc>
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #4 from Martin <[email protected]> --- Created attachment 6241
--> https://bugs.busybox.net/attachment.cgi?id=6241&action=edit
backtrace from npm core dump
I have attached a back trace from the npm crash. I see node::os::GetInterfaceAddresses is called so as an experiment i tried the following javascript
var os = require('os');
var ifaces = os.networkInterfaces();
console.log(ifaces);This produces the same back trace as running npm. Running this code using glibc works. So it seems the issues is npm is using os.networkInterfaces() which works with glibc but not uclibc.
You can find the code for node::os::GetInterfaceAddresses in node.js v0.12.7 here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/src/node_os.cc#L225-L300.
The back trace shows the crash is in OneByteString which is called in several places in node::os::GetInterfaceAddresses. The data it's operating on comes from a call to uv_interface_addresses() which is part libuv that's in node.js. The code for uv_interface_addresses() is here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/deps/uv/src/unix/linux-core.c#L786-L878.
I suspect uv_interface_addresses() is where the issue lies.
Signature · 5 lines
You are receiving this mail because: You are on the CC list for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20151202/48523521/attachment.html>
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #5 from Arnout Vandecappelle <[email protected]> --- (In reply to Martin from comment #4)
Quoted 20 lines
Created attachment 6241 [details]
backtrace from npm core dumpI have attached a back trace from the npm crash. I see
node::os::GetInterfaceAddressesis called so as an experiment i tried the following javascriptvar os = require('os'); var ifaces = os.networkInterfaces(); console.log(ifaces);This produces the same back trace as running npm. Running this code using glibc works. So it seems the issues is npm is using
os.networkInterfaces()which works with glibc but not uclibc.You can find the code for
node::os::GetInterfaceAddressesin node.js v0.12.7 here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/
src/node_os.cc#L225-L300.
Quoted 8 lines
The back trace shows the crash is in OneByteString which is called in several places in
node::os::GetInterfaceAddresses. The data it's operating on comes from a call touv_interface_addresses()which is part libuv that's in node.js. The code foruv_interface_addresses()is here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/
deps/uv/src/unix/linux-core.c#L786-L878.I suspect
uv_interface_addresses()is where the issue lies.
Can you check if libuv's config.h has HAVE_IFADDRS_H ? If not, there is an
obvious bug in node::os::GetInterfaceAddresses: it will loop using the uninitialized count variable when err == UV_ENOSYS. There's a missing return in that condition.
Signature · 2 lines
You are receiving this mail because: You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #6 from Martin <[email protected]> --- (In reply to Arnout Vandecappelle from comment #5)
Quoted 28 lines
(In reply to Martin from comment #4)
Quoted 27 lines
Created attachment 6241 [details]
backtrace from npm core dumpI have attached a back trace from the npm crash. I see
node::os::GetInterfaceAddressesis called so as an experiment i tried the following javascriptvar os = require('os'); var ifaces = os.networkInterfaces(); console.log(ifaces);This produces the same back trace as running npm. Running this code using glibc works. So it seems the issues is npm is using
os.networkInterfaces()which works with glibc but not uclibc.You can find the code for
node::os::GetInterfaceAddressesin node.js v0.12.7 here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/
src/node_os.cc#L225-L300.The back trace shows the crash is in OneByteString which is called in several places in
node::os::GetInterfaceAddresses. The data it's operating on comes from a call touv_interface_addresses()which is part libuv that's in node.js. The code foruv_interface_addresses()is here
https://github.com/nodejs/node/blob/d3492aa7b386946e3a156440cad346e5b0a82838/
deps/uv/src/unix/linux-core.c#L786-L878.
Quoted 6 lines
Quoted 1 line
I suspect
uv_interface_addresses()is where the issue lies.Can you check if libuv's
config.hhasHAVE_IFADDRS_H? If not, there is an
obvious bug innode::os::GetInterfaceAddresses: it will loop using the uninitialized count variable when err ==UV_ENOSYS. There's a missing return in that condition.
HAVE_IFADDRS_H is defined at the top of the linux-core.c file. I spotted this code yesterday but a second look today and I see the issue. The following snip is from
#define HAVE_IFADDRS_H 1
#ifdef __UCLIBC__
# if __UCLIBC_MAJOR__ < 0 || __UCLIBC_MINOR__ < 9 || __UCLIBC_SUBLEVEL__ < 32 # undef HAVE_IFADDRS_H # endif #endif
I think this is trying to say if uclibc version is < 0.9.32 but the logical or is wrong, it should be and. It means HAVE_IFADDRS_H is indeed undefined. If i change this to logical and then npm works.
Also, this code is not in node.js 0.10.40 which is why it works.
I'll work on a patch.
Signature · 2 lines
You are receiving this mail because: You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #7 from Arnout Vandecappelle <[email protected]> --- Preferably make two patches for upstream: one that fixes the SEGV in node::os::GetInterfaceAddresses by adding the missing return (that's a patch we don't really need in buildroot), and one patch that adds support for uClibc-ng.
Signature · 2 lines
You are receiving this mail because: You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
--- Comment #8 from Martin <[email protected]> --- I have submitted 2 patches upsteam:
1) https://github.com/nodejs/node/pull/4272 - Fixes the crash in node.js
2) https://github.com/libuv/libuv/pull/653 - Fixes the underlying issues of uClibc-ng support in libuv
I have tested these patches for node.js 0.12.9, 4.2.3 and 5.2.0 and it fixes the issues. I'll submit patches to buildroot tonight.
Signature · 2 lines
You are receiving this mail because: You are on the CC list for the bug.
[Buildroot] [Bug 8296] nodejs 0.12.7 - npm crashes (seg core dump)
In reply to bugzilla at busybox.nethttps://bugs.busybox.net/show_bug.cgi?id=8296
Thomas Petazzoni <[email protected]> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|NEW |RESOLVED--- Comment #9 from Thomas Petazzoni <[email protected]> --- Fixed by
https://git.busybox.net/buildroot/commit/?id=5bba3ca130249a2557f250095ccfccb6aadb8576.
Thanks Martin!
Signature · 2 lines
You are receiving this mail because: You are on the CC list for the bug.