-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deps: update V8 to 7.2 #24875
deps: update V8 to 7.2 #24875
Conversation
"unresolved external symbol" errors on Windows were already seen on canary. See nodejs/node-v8#89 (comment) |
Error on Linux with GCC 6:
CI: https://ci.nodejs.org/job/node-test-commit-linux/23806/nodes=centos7-64-gcc6/ |
Nine times out of ten that's the compiler getting OOM-killed. All the more likely because it was trying to compile a large generated file. |
Major V8 updates are usually API/ABI incompatible with previous versions. This commit adapts NODE_MODULE_VERSION for V8 7.2. Refs: https://github.com/nodejs/CTC/blob/master/meetings/2016-09-28.md
Co-authored-by: Ujjwal Sharma <usharma1998@gmail.com> win: add v8_init to dependencies Fixes: nodejs/node-v8#89 Co-authored-by: Bartosz Sosnowski <bartosz@janeasystems.com>
Bump minimum version of ICU needed to build node to 63. Refs: v8/v8@30a350f Co-authored-by: Steven R Loomis <srloomis@us.ibm.com>
New heap space: code_large_object_space
Updated and fixed CI: https://ci.nodejs.org/job/node-test-pull-request/20214/ |
/cc @nodejs/platform-ppc The executable produced for linuxone doesn't work (illegal instruction). |
@john-yan can you take a look. |
From@john-yan seems like V8 7.2 is green for us so new CI to see if it is repeatable: https://ci.nodejs.org/job/node-test-commit-v8-linux/2041/ |
CI failed again. The node executable built seems to crash. |
I see that linuxone (s390x) also fails in the node CI in the same way it does for the v8 test. @sam-github can you help investigate what is going on? Looks like with the udpated version of V8 Node crashes on startup for some reason. |
Yes that is probably why we didn't see this before. IIRC runtime code is compiled with the host architecture in sim builds. On real s390 hosts we'd have seen this immediately. |
Hello Jakob, we have v8 testing running locally on s390x host and we never see this either. Do you know which v8 test has coverage for this alignment issue? |
From the backtrace I'd expect it to happen on every Isolate startup if the variable is unaligned. But I'd suggest moving this discussion to another bug to avoid cluttering here ;) |
Original commit message: [snapshot] Always align embedded blob code pointer and size Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: nodejs#24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058} Refs: v8/v8@fc0ddf5
Backport parts of v8/v8@9302db480e8cd7c88fd948baf0cf that fix compiler errors on Windows. Original commit message: [ubsan] Port HeapObject to the new design Merging the temporary HeapObjectPtr back into HeapObject. Bug: v8:3770 Change-Id: I5bcd23ca2f5ba862cf5b52955dca143e531c637b Reviewed-on: https://chromium-review.googlesource.com/c/1386492 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58410} Refs: v8/v8@9302db4
CI for addaleax/node@85ffec2 which might (:crossed_fingers:) fix the Windows compiler errors: https://ci.nodejs.org/job/node-test-commit/25276/ |
So, the compiler errors are fixed, but now there’s a linker error that’s probably going to need attention from somebody more knowledgeable with Windows/V8 snapshots than me:
|
Haven't seen that one before. These Microsoft docs look relevant. |
Is it an option to disable /SAFESEH? Here's another node issue where this has apparently been done before. Alternatively it may also be possible to add |
The problem seems to be in project v8_snapshot, where the file embedded.S is compiled with the MASM tool. We should pass /safeseh to ml.exe to make v8_snapshot.lib compatible with SAFESEH. |
Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: nodejs/node#24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058}
Branch 7.3 was cut a week ago. I'll open a PR with it. We'll see if it's just easier to skip a version. |
Attempte to update directly to 7.3: #25852 |
Original commit message: [snapshot] Always align embedded blob code pointer and size Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: nodejs#24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058} Refs: v8/v8@fc0ddf5
Original commit message: [snapshot] Always align embedded blob code pointer and size Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: nodejs#24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058} Refs: v8/v8@fc0ddf5
Original commit message: [snapshot] Always align embedded blob code pointer and size Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: nodejs#24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058} Refs: v8/v8@fc0ddf5
Original commit message: [snapshot] Always align embedded blob code pointer and size Other platforms besides ARM64 Windows may also have alignment requirements, e.g. PPC and s390. These requirements may affect both the code pointer field and the size field, and so they each need alignment directives because they are stored in different sections. Since aligning wastes a handful of bytes at most, not making alignment conditional on the platform type seems like a good idea. Refs: #24875 Change-Id: I1f58606af294be65e74a1f107cd05fc21e032704 Reviewed-on: https://chromium-review.googlesource.com/c/1433778 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59058} Refs: v8/v8@fc0ddf5 PR-URL: #25852 Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
ETA: Jan 29th, 2019