node icon indicating copy to clipboard operation
node copied to clipboard

V8 build error with 22.7.0

Open bnoordhuis opened this issue 1 year ago • 4 comments

Like https://github.com/nodejs/node/issues/53633 which was for gcc 12 and fixed in commit f4a7ac5e1842c0f4629a0bebfda38f2502a2ee41 but with clang 15.0.7 on x86_64 linux I get the exact same build error:

../deps/v8/src/base/small-vector.h:25:3: error: static assertion failed due to requirement '::v8::base::is_trivially_copyable<std::pair<const v8::internal::com
piler::turboshaft::PhiOp *, const v8::internal::compiler::turboshaft::OpIndex>>::value': T should be trivially copyable                                        
  ASSERT_TRIVIALLY_COPYABLE(T);                                                                                                                                
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                 
../deps/v8/src/base/macros.h:211:3: note: expanded from macro 'ASSERT_TRIVIALLY_COPYABLE'                                                                      
  static_assert(::v8::base::is_trivially_copyable<T>::value, \                                                                                                 
  ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                    
../deps/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:431:65: note: in instantiation of template class 'v8::base::SmallVector<std::pair<const v8::interna
l::compiler::turboshaft::PhiOp *, const v8::internal::compiler::turboshaft::OpIndex>, 16>' requested here                                                      
  base::SmallVector<std::pair<const PhiOp*, const OpIndex>, 16> phis;

Maybe just remove that ASSERT_TRIVIALLY_COPYABLE? Upstream already tests for correctness and to us it's just a recurring source of build breakage.

bnoordhuis avatar Aug 26 '24 21:08 bnoordhuis

Another option would be to pile the affected clang versions onto the ifdef mixture. According to the minimal repro this seems specific to clang 15 (doesn't reproduce on neither clang 14.0.0 nor 16.0.0)

joyeecheung avatar Aug 27 '24 14:08 joyeecheung

Actually I remember we are using clang 15 for macOS in the canary CI? @targos

joyeecheung avatar Aug 27 '24 14:08 joyeecheung

There's nothing special about the canary CI. It's using the same machines and config as main

targos avatar Aug 27 '24 14:08 targos

According to https://en.wikipedia.org/wiki/Xcode#Xcode_11.0_-14.x(since_SwiftUI_framework)_2, clang 15 wasn't included for a long time in Xcode (it's the LLVM column):

CleanShot 2024-08-27 at 16 22 45

targos avatar Aug 27 '24 14:08 targos

I've seen this bug with both clang 14 and 15. What do our buildbots use? 16?

bnoordhuis avatar Sep 19 '24 08:09 bnoordhuis

Forgot to mention, I have a patch ready for upstreaming but I'd like to narrow down the range of broken clangs.

bnoordhuis avatar Sep 19 '24 08:09 bnoordhuis

In Jenkins, the buildbots use Clang 12 In GitHub actions, it seems to be Apple Clang 15 (LLVM 16).

(on macOS)

targos avatar Sep 19 '24 08:09 targos

on Linux, I think we only use Clang in GitHub actions, and it's on version 18.

targos avatar Sep 19 '24 08:09 targos

Just hit this with FreeBSD 13.3 and clang 17.0.6.

FreeBSD clang version 17.0.6 (https://github.com/llvm/llvm-project.git llvmorg-17.0.6-0-g6009708b4367)
Target: x86_64-unknown-freebsd13.3
Thread model: posix
InstalledDir: /usr/bin

richardlau avatar Sep 20 '24 16:09 richardlau

https://chromium-review.googlesource.com/c/v8/v8/+/5872655 - restricted to clang <= 17.

bnoordhuis avatar Sep 20 '24 18:09 bnoordhuis

https://chromium-review.googlesource.com/c/v8/v8/+/5872655 - restricted to clang <= 17.

FYI I tried this out on FreeBSD 13 (clang 17.0.6) but that hasn't fixed the build.

(CI with https://github.com/richardlau/node-1/commit/953b8e35be14ca2985f2357714e06a859da6f33c): https://ci.nodejs.org/job/richardlau-node-test-commit-freebsd/11/nodes=freebsd13-x64/consoleFull

richardlau avatar Oct 01 '24 16:10 richardlau

This is still happening with Node v22.14.0 and FreeBSD 14.2 and clang 18.1.5

renchap avatar Apr 22 '25 08:04 renchap

Looks like I forgot to merge the upstream patch. It took a couple of days to get reviewed and I get way too much email so I probably missed the notification.

I'm not that invested myself anymore but @renchap you're welcome to adopt and resubmit it, no attribution required.

bnoordhuis avatar Apr 22 '25 08:04 bnoordhuis

@bnoordhuis Is it alright if I re-submit the patch?

Seeing the same problem on FreeBSD 15.0-BETA4 with clang 19

jonhermansen avatar Nov 04 '25 07:11 jonhermansen