-
Notifications
You must be signed in to change notification settings - Fork 45
node-report CI runs failing to start node on smartos #84
Comments
cc/ @nodejs/platform-smartos |
Looking into it. |
On that machine, the latest v6.x node binary downloaded from nodejs.org has the following runtime dependencies:
We can see that the dependency on the C++ runtime is not met. Looking into the binary, we can see that it was built to look for runtime libraries in a directory created by the gcc-4.8 package:
However, that package is not installed on that machine:
That package couldn't be installed on that machine becaue it is not available in the pkgsrc repository that it uses. Thus, at runtime, the linker chooses to link to the C++ runtime library of the global zone (
So it seems to me the problem is that node v6 binaries are built with gcc 4.8, but SmartOS 16.x images do not ship with a gcc-4.8 runtime. This is something that is described at nodejs/build#628 (comment). The latest SmartOS 15.4 LTS images should not have these issues, but the Jenkins job would need to make sure that the gcc-4.8 runtime libraries are installed. Let me know if I can do anything else to help. |
@misterdjules - Ok, I can follow that we don't have the right gcc libraries installed and it sounds like there's a difference in their availability for 15.x and 16.x. |
Node worked on smartos for my latest build of a branch I was raising a PR for: https://ci.nodejs.org/view/post-mortem/job/nodereport-continuous-integration/156/ I haven't seen anything to say anyone has updated the machines but if it works when I next build master I'll close this. |
That's because build 156 has a different
for which runtime libraries are available on SmartOS 16.x images.
Correct.
I think for now we should consider that some binary releases available from nodejs.org just don't work on SmartOS 16.x images, so there's no point in running some of these jobs on these images. For SmartOS 15.x images, when testing against versions of node that are built with GCC 4.8, the Jenkins job should run the |
Is there an easy way to work out which ones we should skip, i.e. a Node release line or a command like: somecommand && exit 0
# or
[[ "$NODE_VERSION" ~= ">7" ]] && exit 0
So we need to be installing these every time we run the job? |
I don't know what releases are built with which compiler, so I can't recommend anything. @nodejs/build probably knows.
Yes, or have it installed when the build agent is provisioned. I don't know how @nodejs/build handle these. |
@misterdjules we don't install any specific compilers; just follow whatever I'm not a fan of having jenkins install any packages at any time. If we need to update gcc specficially for |
This is the logic I had added to the release jobs:
|
@jbergstroem just to note this is not specific to testing It would seem that for modules we should make sure that we only test on machines that match the support level. So when we test a module with Node version 6, we should only run on the smartos14 test machines. I think we should be able to use a variation on what I posted for the release jobs in the comment above to get the right combination. We'll have to add smartos14 to the matrix, but I see we do have some test machines at that level. @gibfahn is that enough info to make the required changes ? |
Just for reference, see also nodejs/node#11444 |
I've added smartos14-64 to the configuration matrix, and set the combination filter field to this:
So node version 6 and 7 run on smartos14 only, and node version 8 runs on smartos15 or 16 only |
CI runs using node 6 are now ok, running the node-report tests on test-joyent-smartos14-x64-2 (smartos14-64), e.g.: https://ci.nodejs.org/view/post-mortem/job/nodereport-continuous-integration/180/ |
The smartos machines seem to be failing to run node 6 in our CI runs. I found this when testing my PR branch but have confirmed it below with a build against master using Node 6:
https://ci.nodejs.org/view/post-mortem/job/nodereport-continuous-integration/154/MACHINE=smartos16-64/console
The error is occuring during setup, before node-report is installed:
ld.so.1: node: fatal: relocation error: file /home/iojs/build/workspace/nodereport-continuous-integration/MACHINE/smartos16-64/node-v6.10.2-sunos-x64/bin/node: symbol _ZNSt8__detail15_List_node_base7_M_hookEPS0_: referenced symbol not found
It looks likely to be a setup or installation error on the build machines. It extracted node-v6.10.2-sunos-x64.tar.gz to test with. (Full details in the console output above.)
The text was updated successfully, but these errors were encountered: