Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-69535

WebEngine fails to build: constexpr constructor does not have empty body

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P2: Important
    • None
    • 5.11.1
    • WebEngine
    • None

    Description

      This happens when building gn:

      c++ -MMD -MF base/at_exit.o.d  -I/tmp/e2/build/build/qtwebengine/src/3rdparty/chromium/tools/gn/out/Release/gen -I/tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -O2 -g0 -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -pthread -pipe -fno-exceptions -D__STDC_FORMAT_MACROS -std=c++14 -Wno-c++11-narrowing -c /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/at_exit.cc -o base/at_exit.o
      In file included from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/memory/ref_counted.h:17:0,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/callback_internal.h:14,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/callback.h:9,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/at_exit.h:9,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/at_exit.cc:5:
      /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/memory/scoped_refptr.h: In constructor 'constexpr scoped_refptr<T>::scoped_refptr(T*)':
      /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/memory/scoped_refptr.h:166:3: error: constexpr constructor does not have empty body
         }
         ^
      In file included from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/callback_internal.h:14:0,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/callback.h:9,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/at_exit.h:9,
                       from /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/at_exit.cc:5:
      /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/memory/ref_counted.h: In constructor 'constexpr base::subtle::RefCountedThreadSafeBase::RefCountedThreadSafeBase(base::subtle::StartRefCountFromOneTag)':
      /tmp/e2/build/qt-everywhere-src-5.11.1/qtwebengine/src/3rdparty/chromium/base/memory/ref_counted.h:157:3: error: constexpr constructor does not have empty body
         }
         ^
      At global scope:
      cc1plus: warning: unrecognized command line option "-Wno-c++11-narrowing"
      

      So there is also problem with an incorrect warning flag, but that seems to still work. The setup is a cross-build x86 to ARM, with the host compiler being:

      c++ (Debian 4.9.2-10) 4.9.2

      The target compiler is a plain gcc 5.4.0.

      The code looks like this:

        explicit constexpr RefCountedThreadSafeBase(StartRefCountFromOneTag)
            : ref_count_(1) {
      #if DCHECK_IS_ON()
          needs_adopt_ref_ = true;
      #endif
        }
      

      So if DCHECK_IS_ON() would evaluate to true the problem will likely go away. This would require building gn with -DNDEBUG as it seems.

      Attachments

        For Gerrit Dashboard: QTBUG-69535
        # Subject Branch Project Status CR V

        Activity

          People

            juri.valdmann Jüri Valdmann (Inactive)
            rebemlix Rolf Eike Beer
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes