New issue
Advanced search Search tips

Issue 739115 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression



Sign in to add a comment

WebRTC fails to compile on Linux release after "Switch Chrome on Linux to libc++"

Project Member Reported by oprypin@chromium.org, Jul 4 2017

Issue description

After this change:
https://chromium.googlesource.com/chromium/src/build/+/c63241d0d3986fca8ea458895a6ce125e98c5969%5E%21/#F0
if it is rolled into WebRTC, WebRTC fails to compile on Linux with the following GN args:
dcheck_always_on = true
is_clang = false
is_debug = false
rtc_include_tests = false
target_cpu = "x64"
treat_warnings_as_errors = false
use_sysroot = false

See a demonstration of bots failing on that revision and succeeding on the previous one:
https://codereview.webrtc.org/2967813002/#ps80001

This has prevented rolling Chromium into WebRTC since Friday, Jun 30:
https://codereview.webrtc.org/2965643003/

Example failure (the first failing file changes depending on what happens to be compiled first):
[24/1296] CXX obj/third_party/protobuf/protoc_lib/csharp_helpers.o
FAILED: obj/third_party/protobuf/protoc_lib/csharp_helpers.o 
/b/c/goma_client/gomacc g++ -MMD -MF obj/third_party/protobuf/protoc_lib/csharp_helpers.o.d -DV8_DEPRECATION_WARNINGS -DDCHECK_ALWAYS_ON=1 -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -I../.. -Igen -I../../third_party/protobuf/src -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -B../../third_party/binutils/Linux_x64/Release/bin -pthread -m64 -march=x86-64 -O2 -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g0 -fvisibility=hidden -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-unused-parameter -std=gnu++11 -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -Wno-narrowing -c ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc -o obj/third_party/protobuf/protoc_lib/csharp_helpers.o
In file included from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.h:43:0,
                 from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc:40:
../../third_party/protobuf/src/google/protobuf/io/printer.h:208:20: error: reference to 'map' is ambiguous
   void Print(const map<string, string>& variables, const char* text);
                    ^
In file included from ../../buildtools/third_party/libc++/trunk/include/set:389:0,
                 from ../../third_party/protobuf/src/google/protobuf/descriptor.h:61,
                 from ../../third_party/protobuf/src/google/protobuf/message.h:122,
                 from ../../third_party/protobuf/src/google/protobuf/descriptor.pb.h:26,
                 from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.h:40,
                 from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc:40:
../../buildtools/third_party/libc++/trunk/include/__tree:1488:77: note: candidates are: template<class, class, class, class> class std::__1::map
     template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
                                                                             ^
In file included from ../../third_party/protobuf/src/google/protobuf/extension_set.h:42:0,
                 from ../../third_party/protobuf/src/google/protobuf/descriptor.pb.h:28,
                 from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.h:40,
                 from ../../third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc:40:
../../buildtools/third_party/libc++/trunk/include/map:609:11: note:                 template<class _Key, class _Tp, class _Compare, class _Allocator> class std::__1::map
     class map;


Full logs at: https://build.chromium.org/p/tryserver.webrtc/builders/linux_gcc_rel/builds/269/steps/compile/logs/stdio


Corresponding bug in WebRTC: https://bugs.chromium.org/p/webrtc/issues/detail?id=7922
 
Labels: -Pri-1 Pri-2
This gets a lower priority after a workaround has been applied
https://bugs.chromium.org/p/webrtc/issues/detail?id=7922

The thing to watch out for in Chromium is whether it makes sense to always apply libc++ even if the compiler is GCC.
Cc: thomasanderson@chromium.org thakis@chromium.org
Labels: -Restrict-View-Google -Infra-Troopers
This isn't a trooper issue, it's a source-related thing.
Components: -Infra
Owner: thomasanderson@chromium.org
Status: Started (was: Untriaged)

Sign in to add a comment