actions / runner-images

GitHub Actions runner images
MIT License
10.09k stars 3.04k forks source link

libstdc++-14 bits/unicode.h in Ubuntu 24.04 is broken #10725

Open tommie opened 2 weeks ago

tommie commented 2 weeks ago

Description

Based on investigation in https://github.com/tommie/v8go/issues/67.

My ubuntu-latest builds of libv8 started failing because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115119.

The GCC 14 currently in Ubuntu 24.04 is broken for v8/third_party/abseil-cpp/absl/base/internal/cycleclock.cc with

/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/unicode.h:807:4: error: expression is not assignable

The workaround is to

  steps:
    - name: Remove GCC 14
      run: |
        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115119
        sudo apt-get purge -yq gcc-14 g++-14 libstdc++-14-dev
        sudo apt-get autopurge -yq

The https://github.com/actions/runner-images/blob/ubuntu24/20240922.1/images/ubuntu/Ubuntu2404-Readme.md documentation only lists GCC 13 as installed version, which required some dpkg -l debugging. I see the #10636 tracking bug says all three latest versions are installed.

I suggest either updating docs, or removing GCC 14 until 14.2 is backported to Ubuntu 24.

Platforms affected

Runner images affected

Image version and build link

https://github.com/tommie/v8go/actions/runs/11136183688/job/30947620891 (the Linux builds were failing because libgtk is also not installed in 24.04)

Is it regression?

yes, 20240915.1.0 was fine: https://github.com/tommie/v8go/actions/runs/11024590821/job/30618097058

Expected behavior

That libv8 compiles.

Actual behavior

libv8 does not compile.

Repro steps

See https://github.com/tommie/v8go/blob/master/.github/workflows/v8build.yml. (This is part of the v8upgrade workflow, but can also be run separately.)

vidyasagarnimmagaddi commented 2 weeks ago

Hi @tommie , Thank you for bringing this issue to us. We are looking into this issue and will update you on this issue after investigating

Prabhatkumar59 commented 3 days ago

Hi @tommie - From your issue description, It can be clearly seen that GCC 14 in Ubuntu 24.04 has a known issue causing the libv8 build to fail due to a bug in libstdc++-14.. In order to fix this, you can temporarily switch to GCC 13 as:- Firstly, you can remove GCC 14 by using below bash command:- sudo apt-get purge -yq gcc-14 g++-14 libstdc++-14-dev sudo apt-get autopurge -yq

Secondly, Install GCC 13:- sudo apt-get update sudo apt-get install -y gcc-13 g++-13 This workaround will allow the build to proceed. Also please monitor the GCC Bug 115119 for updates, and switch back to GCC 14 once a fix is available. So, Once GCC 14.2 or a patched version is released and backported to Ubuntu 24.04, you can switch back to the latest version. Please update me on this once after trying. Thanks!

Prabhatkumar59 commented 2 days ago

Hi @tommie, a new image version will be rolled out next week. I request you to wait until then. Once after the new image version is available, please sync your main branch and check it. Thank you!

tommie commented 2 days ago

Uninstalling GCC 14 is indeed the workaround I used. https://github.com/tommie/v8go/pull/68/files

Just confirmed that Ubuntu is now at 14.2.0-4ubuntu2~24.04, so yes, hopefully this is fixed with a new image: https://packages.ubuntu.com/noble/gcc-14