New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 882347 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Oct 3
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug

Blocking:
issue 819294



Sign in to add a comment

src/net/third_party/quic/core/frames/quic_frame.h: Fails to build with GCC

Reported by shawnana...@gmail.com, Sep 10

Issue description

UserAgent: Mozilla/5.0 (X11; Fedora; Linux ppc64le; rv:61.0) Gecko/20100101 Firefox/61.0

Steps to reproduce the problem:
1. Build chromium with GCC 8.1.1
2. 
3. 

What is the expected behavior?

What went wrong?
The changes made to quic_frame.h by commit 929883afba6805987954c3628a66ae5de9ea9a32 (https://chromium.googlesource.com/chromium/src/+/929883afba6805987954c3628a66ae5de9ea9a32%5E%21/#F50) break building on gcc.

The error is as follows:
[18/13118] CXX obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o
FAILED: obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o 
g++ -MMD -MF obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o.d -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=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 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DCOMPONENT_BUILD -DCR_LIBCXX_REVISION=332543 -DCR_LIBCXXABI_REVISION=331450 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DWEBP_EXTERN=extern -DTOOLKIT_VIEWS=1 -DGL_GLEXT_PROTOTYPES -DUSE_GLX -DUSE_EGL -DVK_NO_PROTOTYPES -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -DPROTOBUF_USE_DLLS -DBORINGSSL_SHARED_LIBRARY -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_VULKAN_HEADER=\"../../skia/config/SkVulkanConfig.h\" -DSK_VULKAN=1 -DSKIA_DLL -DGR_GL_IGNORE_ES3_MSAA=0 -DSKCMS_API=__attribute__\(\(visibility\(\"default\"\)\)\) -DSK_SUPPORT_GPU=1 -DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_driver_bug_workaround_autogen.h\" -DVK_NO_PROTOTYPES -DI18N_ADDRESS_VALIDATION_DATA_URL=\"https://chromium-i18n.appspot.com/ssl-aggregate-address/\" -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -DLEVELDB_PLATFORM_CHROMIUM=1 -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_CHROMIUM_BUILD -DWEBRTC_POSIX -DWEBRTC_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DNO_MAIN_THREAD_WRAPPING -DI18N_PHONENUMBERS_USE_ICU_REGEXP=1 -DI18N_PHONENUMBERS_USE_ALTERNATE_FORMATS=1 -DI18N_PHONENUMBERS_NO_THREAD_SAFETY=1 -I../.. -Igen -I../../third_party/libwebp/src -I../../third_party/libyuv/include -I../../third_party/khronos -I../../gpu -I../../third_party/vulkan/include -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -I../../third_party/boringssl/src/include -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/gpu -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/vulkan/include -I../../third_party/skia/third_party/vulkanmemoryallocator -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/skia/modules/skottie/include -I../../third_party/vulkan/include -I../../third_party/libaddressinput/src/cpp/include -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/leveldatabase -I../../third_party/leveldatabase/src -I../../third_party/leveldatabase/src/include -I../../third_party/webrtc_overrides -I../../third_party/webrtc -I../../third_party/abseil-cpp -I../../third_party/cacheinvalidation/overrides -I../../third_party/cacheinvalidation/src -I../../third_party/libphonenumber/dist/cpp/src -Igen/third_party/libphonenumber -I../../third_party/re2/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 -pthread -m64 -Wall -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-missing-field-initializers -Wno-unused-parameter -O0 -fno-omit-frame-pointer -g2 -fno-builtin-abs -fvisibility=hidden -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/nss3 -I/usr/include/nspr4 -std=gnu++14 -Wno-narrowing -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../components/autofill/core/browser/password_requirements_spec_fetcher_impl.cc -o obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o
In file included from ../../net/third_party/quic/core/quic_packets.h:18,
                 from ../../net/base/net_error_details.h:10,
                 from ../../net/url_request/url_request.h:27,
                 from ../../services/network/public/cpp/resource_request.h:17,
                 from ../../components/autofill/core/browser/password_requirements_spec_fetcher_impl.cc:19:
../../net/third_party/quic/core/frames/quic_frame.h:73:7: error: member ‘quic::QuicFrame::<unnamed union>::<unnamed struct>::<unnamed union> quic::QuicFrame::<unnamed union>::<unnamed struct>::<anonymous>’ with constructor not allowed in anonymous aggregate
       union {

Reverting the file to its state in commit 7b4f22bd25461cb32236c07699b029c7411ba494 allows the build to continue.

Did this work before? N/A 

Chrome version: 70.0.3538.9  Channel: dev
OS Version: Fedora
Flash Version:
 
Components: Internals>Network>QUIC
Labels: Needs-Triage-M70
I didn't think Chrome supported building with gcc?
Labels: M-70
Owner: zhongyi@chromium.org
Status: Assigned (was: Unconfirmed)
Assining to zhongyi@ as per C#0 identified commit https://chromium.googlesource.com/chromium/src/+/7b4f22bd25461cb32236c07699b029c7411ba494.
Blocking: 819294
> I didn't think Chrome supported building with gcc?

It supports GCC on a "best-effort" basis: things may break since no bots are testing it, but patches are welcome and people generally try to help when the build breaks.

As for this specific issue, the problem's likely https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77314: the innermost union in |QuicFrame| has members such as |padding_frame| that have user-provided constructors. Adding a name to that struct between the two unions fixes the build, but that has the obvious consequence that it's no longer an anonymous struct.
Owner: wub@chromium.org
wub@chromium.org: mind taking a look to see if we can fix this? The change was introduced in https://chromium-review.googlesource.com/c/chromium/src/+/1185978. 
Labels: -Needs-Triage-M70 Target-71
Thank you!

Sign in to add a comment