Since 6.3.0-3ubuntu1 some acc autotests fail with "atomic_base.h:390:7: error: inlining failed in call to always_inline"

Bug #1660108 reported by Rik Mills
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gcc-6 (Debian)
New
Undecided
Unassigned
gcc-6 (Ubuntu)
New
Undecided
Unassigned

Bug Description

Since 6.3.0-3ubuntu1 some acc autotests fail with "atomic_base.h:390:7: error: inlining failed in call to always_inline"

On zesty.

purpose 1.1-4ubuntu1 in proposed.

acc passed on test prior to GCC 6.3.0-3ubuntu1

Looking at the logs for the more frequent debian autotests on their CI for purpose:

https://ci.debian.net/packages/p/purpose/unstable/amd64/

the bug appeared immediately GCC 6.3.0-3 replaced 6.3.0-2, and persists since.

Other failures examples on ubuntu include test for marble, and libkf5kgeomap against new marble.

------ test artifact extracts --------

The GCC parameters:
  gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC -std=c++11 "/tmp/46X9Aqny79/dump1.h" -I/usr/include/KF5/purposewidgets -I/usr/include/KF5/purpose -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/KF5/KCoreAddons -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtCore

In file included from /usr/include/c++/6/atomic:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qnamespace.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /usr/include/KF5/purpose/purpose/configuration.h:21,
                 from /usr/include/KF5/purpose/Purpose/Configuration:1,
                 from /tmp/46X9Aqny79/dump1.h:5:
/usr/include/c++/6/bits/atomic_base.h: In member function ‘std::atomic<bool>::operator bool() const’:
/usr/include/c++/6/bits/atomic_base.h:390:7: error: inlining failed in call to always_inline ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order) const noexcept [with _ITp = bool; std::__atomic_base<_IntTp>::__int_type = bool; std::memory_order = std::memory_order]’: function body not available
       load(memory_order __m = memory_order_seq_cst) const noexcept
       ^~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qnamespace.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /usr/include/KF5/purpose/purpose/configuration.h:21,
                 from /usr/include/KF5/purpose/Purpose/Configuration:1,
                 from /tmp/46X9Aqny79/dump1.h:5:
/usr/include/c++/6/atomic:81:27: note: called from here
     { return _M_base.load(); }
                           ^

The GCC parameters:
  gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC "/tmp/TSJsBYB52L/dump1.h" -I/usr/include/KF5/KGeoMap -I/usr/include/x86_64-linux-gnu/qt5

In file included from /usr/include/c++/6/atomic:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbitarray.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QBitArray:1,
                 from /usr/include/KF5/KGeoMap/kgeomap/abstractmarkertiler.h:32,
                 from /usr/include/KF5/KGeoMap/KGeoMap/AbstractMarkerTiler:1,
                 from /tmp/TSJsBYB52L/dump1.h:4:
/usr/include/c++/6/bits/atomic_base.h: In member function ‘std::atomic<bool>::operator bool() const’:
/usr/include/c++/6/bits/atomic_base.h:390:7: error: inlining failed in call to always_inline ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order) const noexcept [with _ITp = bool; std::__atomic_base<_IntTp>::__int_type = bool; std::memory_order = std::memory_order]’: function body not available
       load(memory_order __m = memory_order_seq_cst) const noexcept
       ^~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbitarray.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QBitArray:1,
                 from /usr/include/KF5/KGeoMap/kgeomap/abstractmarkertiler.h:32,
                 from /usr/include/KF5/KGeoMap/KGeoMap/AbstractMarkerTiler:1,
                 from /tmp/TSJsBYB52L/dump1.h:4:
/usr/include/c++/6/atomic:81:27: note: called from here
     { return _M_base.load(); }
                           ^

Rik Mills (rikmills)
summary: - since 6.3.0-3ubuntu1 some scc autotests fail with "atomic_base.h:390:7:
+ Since 6.3.0-3ubuntu1 some acc autotests fail with "atomic_base.h:390:7:
error: inlining failed in call to always_inline"
description: updated
Revision history for this message
Rik Mills (rikmills) wrote :

A little more testing to hopefully confirm.......

Running the affected purpose/libkf5kgeomap/marble tests locally with autopacktest, the recommended qemu and testbed from the wiki results in:

gcc-6 6.3.0-5ubuntu1 from 'proposed' = FAIL with above errors with the headers

logging into an above testbed that just failed, and downgrading gcc-6 and deps to 6.3.0-2ubuntu1 (i.e. last unaffected version) from release pocket gives

gcc-6 6.3.0-2ubuntu1 from 'release' = PASS

Revision history for this message
Rik Mills (rikmills) wrote :
Revision history for this message
Rik Mills (rikmills) wrote :

Seems that passing -fno-keep-inline-functions to GCC in the acc tests for much of kubuntu's packages.

I am therefore not sure if this is a bug and regression, or simply a new 'feature' or 'choice' in new GCC, that results in needing to apply new mitigation or adaption measures in these circumstances where it has an impact.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.