Giter Club home page Giter Club logo

Comments (11)

richardlau avatar richardlau commented on June 19, 2024 1

Another s390x gcc bug has been identified, this time in gcc 12 and 13 when c++20 is enabled:

  • Bug 113960 - [11/12 Regression] std::map with std::vector as input overwrites itself with c++20, on s390x platform

This one currently doesn't affect Node.js because we haven't landed nodejs/node#45427. We are working with the RH team that looks after the gcc-toolsets to get the fix into gcc-toolsets (preferably 12) once upstream gcc have backported the fixes.

I'm about to open a PR to Ansible installation of gcc-toolsets 12 and 13 onto our RHEL 8 machines. This will make those compilers available on the machine so we can run test builds, etc. We can then make any required select-compiler.sh changes in a follow up PR.

from build.

richardlau avatar richardlau commented on June 19, 2024 1

I've merged #3659. It contains a temporary patch to one of the libstdc++ header files for gcc-toolset-12 while we wait for the RPM to be updated (current estimate we were given is "around May"). I'll keep this issue open to remind us to revert 9c149d0 when the fix for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113960 makes it into gcc-toolset-12.

from build.

targos avatar targos commented on June 19, 2024

FWIW I'm always up for upgrading compilers anywhere 😄

from build.

mhdawson avatar mhdawson commented on June 19, 2024

@richardlau is the V8 code with the bug already in existing release lines or if not, likely to be backported ?

from build.

richardlau avatar richardlau commented on June 19, 2024

@richardlau is the V8 code with the bug already in existing release lines or if not, likely to be backported ?

Current V8 in Node.js uses V8's custom optional. I don't know if the change will end up in the version of V8 we'll end up using in Node.js 22.

from build.

mhdawson avatar mhdawson commented on June 19, 2024

Ok so the question is if we need to have a new gcc for Node.js 22 or Node.js 23, right?

from build.

mhdawson avatar mhdawson commented on June 19, 2024

Thinking about it, we do often pull in a version of v8 after 22 is cut, so it may not be easy to know that until close to the LTS promotion.

It may be best to assume it will be needed for 22 so that we don't need to update compilers after 22 is cut.

from build.

richardlau avatar richardlau commented on June 19, 2024

Another s390x gcc bug has been identified, this time in gcc 12 and 13 when c++20 is enabled:

  • Bug 113960 - [11/12 Regression] std::map with std::vector as input overwrites itself with c++20, on s390x platform

This one currently doesn't affect Node.js because we haven't landed nodejs/node#45427. We are working with the RH team that looks after the gcc-toolsets to get the fix into gcc-toolsets (preferably 12) once upstream gcc have backported the fixes.

For tracking Bug 113960 being backported to gcc-toolset-12: https://issues.redhat.com/browse/RHEL-29952

from build.

richardlau avatar richardlau commented on June 19, 2024

I just tried running our V8 CI on rhel8-s390x for main with gcc-toolset-12 and it failed 😞.

select-compiler.sh changes in https://github.com/nodejs/build/tree/gts
https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/544/nodes=rhel8-s390x,v8test=v8test/consoleFull

17:37:32 /opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
17:37:32   431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
17:37:32       |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

From @miladfarca:

yes the fix is is only available in main and beta. You will need to use this v8 patch: https://chromium-review.googlesource.com/c/v8/v8/+/5331756 and this gn patch: https://gn-review.googlesource.com/c/gn/+/16820

For the gn patch, we can possibly roll forwards to main (or at least to a later commit). We pinned before for compatibility for Node.js 14 -- #3335 is open to unpin or update since Node.js 14 is no longer supported.

from build.

richardlau avatar richardlau commented on June 19, 2024

Opened #3659 to roll forward gn and use gcc-toolset-12 on rhel8-s390x.
Also opened nodejs/node#52183 to backport https://chromium-review.googlesource.com/c/v8/v8/+/5331756.

from build.

richardlau avatar richardlau commented on June 19, 2024

gcc-toolset-12 now contains the fix for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113960.
#3736 reverts 9c149d0 and we're back to using the toolset as-is from the OS' package repository.

from build.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.