Skip to content

Patch Node 4.8.4 to fix segmetation faults.#9031

Merged
benjamn merged 11 commits intorelease-1.5.2from
patch-node-4.8.4-to-fix-segfaults
Aug 23, 2017
Merged

Patch Node 4.8.4 to fix segmetation faults.#9031
benjamn merged 11 commits intorelease-1.5.2from
patch-node-4.8.4-to-fix-segfaults

Conversation

@benjamn
Copy link
Contributor

@benjamn benjamn commented Aug 21, 2017

Brings nodejs/node#14829 to the version of Node that ships with Meteor, hopefully preventing segmentation faults like those reported in #8648.

These changes will be officially released in Node 4.8.5, but we didn't want to wait until September or October for that release.

All credit for these changes belongs to @abernix. I simply adapted his script to run in a separate Jenkins job, so that we don't have to rebuild Node from source every time we publish a new dev bundle.

Copy link
Contributor

@hwillson hwillson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is awesome - thanks @benjamn (and @abernix)!

@abernix
Copy link
Contributor

abernix commented Aug 22, 2017

The failures on the assets - helper exists to unicode normalize path strings - assets test are very legitimate. Based on the process.config of this binary, we're missing ICU support (which Node.js official releases are built with).

Will get that fixed soon!

Edit: Same applies to assets - unicode asset names are allowed - assets and possibly others.

Ben Newman and others added 10 commits August 22, 2017 16:41
This commit revives the script that was removed last year by
a4ff6b7, when we switched from building
our own version of Node to downloading the prebuilt release.

The new implementation comes from @abernix's work on this branch:
https://github.com/meteor/meteor/tree/abernix/dev-bundle-from-hash
Thanks to @abernix for identifying this solution to the duplication
between dev_bundle/include/node and dev_bundle/.node-gyp/*/node.
To remain the same as official Node.js releases, we need to build with
the `small-icu` ICU (International Components for Unicode) package.
For Node.js 4.x this means ICU 56.x.  As found with `process.config` on
an official Node.js release.

See https://github.com/nodejs/node/wiki/Intl#configure-node-with-specific-icu-source.
@benjamn benjamn force-pushed the patch-node-4.8.4-to-fix-segfaults branch from 44fd907 to e2fe03a Compare August 22, 2017 20:57
A while back we switched from running `./meteor --get-ready`, a command
that takes many minutes and sometimes runs out of memory, to just running
`./meteor --help` to prepare for self-tests.

The hope was that `./meteor --help` would fail less often, and the work
that would have been done by `./meteor --get-ready` would be spread out
through the actual tests. This helped, I think, but we've been seeing
quite a few self-test failures due to unreliable timing of the actual
tests, so I'd like to try shifting the balance back.

I'm pushing this to the branch with our patched Node 4.8.4, because
that branch should have a lower risk of segmentation faults, which may
allow `./meteor --get-ready` to succeed more often.

This is a bit of a shot in the dark, admittedly, but I want to see what
happens. 🤞
./meteor --help
# shouldn't take longer than 5 minutes
no_output_timeout: 5m
./meteor --get-ready
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This worked amazingly well!

@benjamn benjamn merged commit 55be71b into release-1.5.2 Aug 23, 2017
@abernix abernix mentioned this pull request Nov 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants