Activity log for bug #1916705

Date Who What changed Old value New value Message
2021-02-24 07:24:05 Christian Ehrhardt  bug added bug
2021-02-24 07:24:20 Christian Ehrhardt  bug task added glib2.0 (Ubuntu)
2021-02-24 07:25:49 Christian Ehrhardt  description qemu now breaks in Hirsute (it didn't 23h ago) Broken: https://launchpadlibrarian.net/524654684/buildlog_ubuntu-hirsute-amd64.qemu_1%3A5.2+dfsg-6ubuntu1_BUILDING.txt.gz Good before: https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/4471/+packages Error: ../../disas/arm-a64.cc In file included from /usr/include/glib-2.0/glib/gmacros.h:241, from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from /<<BUILDDIR>>/qemu-5.2+dfsg/include/glib-compat.h:32, from /<<BUILDDIR>>/qemu-5.2+dfsg/include/qemu/osdep.h:126, from ../../disas/arm-a64.cc:21: /usr/include/c++/10/type_traits:56:3: error: template with C linkage 56 | template<typename _Tp, _Tp __v> | ^~~~~~~~ ../../disas/arm-a64.cc:20:1: note: ‘extern "C"’ linkage started here 20 | extern "C" { | ^~~~~~~~~~ Also in disas/nanomips.cpp, ... And indeed disas/arm-a64.cc has: 20 extern "C" { 21 #include "qemu/osdep.h" 22 #include "disas/dis-asm.h" 23 } Through the chain of headers as reported above this gets to the templates in /usr/include/c++/10/type_traits which fails due to that. So C++ constructs within a C scope which is this bug. Upstream qemu has not recently changed yet for this. The code is the same since 2016 via commit e78490c44: "disas/arm-a64.cc: Include osdep.h first" by Peter Maydell. But what was different before to break it now? To find that I was comparing Hirsute vs Hirsute-proposed ... It is indeed failing in -proposed but working in hirsute-release. 10.2.1-20ubuntu1 : bad repro in broken build: $ cd /root/qemu-5.2+dfsg/b/qemu $ c++ -Ilibcommon.fa.p -I. -I../.. -Iqapi -Itrace -Iui -Iui/shader -I/usr/include/pixman-1 -I/usr/include/virgl -I/usr/include/libpng16 -I/usr/include/spice-server -I/usr/include/spice-1 -I/usr/include/libusb-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cacard -I/usr/include/nss -I/usr/include/nspr -I/usr/include/PCSC -I/usr/include/slirp -fdiagnostics-color=auto -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=gnu++11 -O2 -g -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -U_FORTIFY_SOURCE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wundef -Wwrite-strings -fno-strict-aliasing -fno-common -fwrapv -g -O2 -ffile-prefix-map=/root/qemu-5.2+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wendif-labels -Wexpansion-to-defined -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -isystem /root/qemu-5.2+dfsg/linux-headers -isystem linux-headers -iquote /root/qemu-5.2+dfsg/tcg/i386 -iquote . -iquote /root/qemu-5.2+dfsg -iquote /root/qemu-5.2+dfsg/accel/tcg -iquote /root/qemu-5.2+dfsg/include -iquote /root/qemu-5.2+dfsg/disas/libvixl -pthread -fPIE -DSTRUCT_IOVEC_DEFINED -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DNCURSES_WIDECHAR -MD -MQ libcommon.fa.p/disas_nanomips.cpp.o -MF libcommon.fa.p/disas_nanomips.cpp.o.d -o libcommon.fa.p/disas_nanomips.cpp.o -c ../../disas/nanomips.cpp With that I have a test env... Doko asked me to test https://launchpad.net/ubuntu/+source/gcc-10/10.2.1-19ubuntu1/+build/20995220/+files/g++-10_10.2.1-19ubuntu1_amd64.deb That fails as well, but also good as well as bad case have 10.10.2.1-20ubuntu1 It must be something else. The difference were ~340 packages I was upgrading them to spot what broke it. I eventually found glib 2.66 -> 2.67 to break it. libglib2.0-0/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-bin/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-data/hirsute-proposed 2.67.4-1 all [upgradable from: 2.66.4-1] libglib2.0-dev-bin/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-dev/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] Old: /* * We can only use __typeof__ on GCC >= 4.8, and not when compiling C++. Since * __typeof__ is used in a few places in GLib, provide a pre-processor symbol * to factor the check out from callers. * * This symbol is private. */ #undef g_has_typeof #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && !defined(__cplusplus) #define g_has_typeof #endif New: /* * We can only use __typeof__ on GCC >= 4.8, and not when compiling C++. Since * __typeof__ is used in a few places in GLib, provide a pre-processor symbol * to factor the check out from callers. * * This symbol is private. */ #undef glib_typeof #if !defined(__cplusplus) && \ ((defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))) || \ defined(__clang__)) #define glib_typeof(t) __typeof__ (t) #elif defined(__cplusplus) && __cplusplus >= 201103L /* C++11 decltype() is close enough for our usage */ #include <type_traits> <--- THIS IS WHAT BREAKS US #define glib_typeof(t) typename std::remove_reference<decltype (t)>::type #define glib_typeof_2_68 #endif On the glib side this is due to: https://gitlab.gnome.org/GNOME/glib/-/issues/2331 Also related: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1935 https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/J3P4TRHLWNDIKXF76OLYZNAPTABCZ3U5/#7LXFUDBBBIT23FE44QJYWX3I7U4EHW6M Qemu try to fix/discussion at: https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg07294.html This won't be the final solution, but it gets things going for the time being. qemu now breaks in Hirsute (it didn't 23h ago) Broken: https://launchpadlibrarian.net/524654684/buildlog_ubuntu-hirsute-amd64.qemu_1%3A5.2+dfsg-6ubuntu1_BUILDING.txt.gz Good before: https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/4471/+packages Error: ../../disas/arm-a64.cc In file included from /usr/include/glib-2.0/glib/gmacros.h:241,                  from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9,                  from /usr/include/glib-2.0/glib/gtypes.h:32,                  from /usr/include/glib-2.0/glib/galloca.h:32,                  from /usr/include/glib-2.0/glib.h:30,                  from /<<BUILDDIR>>/qemu-5.2+dfsg/include/glib-compat.h:32,                  from /<<BUILDDIR>>/qemu-5.2+dfsg/include/qemu/osdep.h:126,                  from ../../disas/arm-a64.cc:21: /usr/include/c++/10/type_traits:56:3: error: template with C linkage    56 | template<typename _Tp, _Tp __v>       | ^~~~~~~~ ../../disas/arm-a64.cc:20:1: note: ‘extern "C"’ linkage started here    20 | extern "C" {       | ^~~~~~~~~~ Also in disas/nanomips.cpp, ... And indeed disas/arm-a64.cc has:  20 extern "C" {  21 #include "qemu/osdep.h"  22 #include "disas/dis-asm.h"  23 } Through the chain of headers as reported above this gets to the templates in /usr/include/c++/10/type_traits which fails due to that. So C++ constructs within a C scope which is this bug. Upstream qemu has not recently changed yet for this. The code is the same since 2016 via commit e78490c44: "disas/arm-a64.cc: Include osdep.h first" by Peter Maydell. But what was different before to break it now? To find that I was comparing Hirsute vs Hirsute-proposed ... It is indeed failing in -proposed but working in hirsute-release. 10.2.1-20ubuntu1 : bad repro in broken build: $ cd /root/qemu-5.2+dfsg/b/qemu $ c++ -Ilibcommon.fa.p -I. -I../.. -Iqapi -Itrace -Iui -Iui/shader -I/usr/include/pixman-1 -I/usr/include/virgl -I/usr/include/libpng16 -I/usr/include/spice-server -I/usr/include/spice-1 -I/usr/include/libusb-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cacard -I/usr/include/nss -I/usr/include/nspr -I/usr/include/PCSC -I/usr/include/slirp -fdiagnostics-color=auto -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=gnu++11 -O2 -g -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -U_FORTIFY_SOURCE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wundef -Wwrite-strings -fno-strict-aliasing -fno-common -fwrapv -g -O2 -ffile-prefix-map=/root/qemu-5.2+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wendif-labels -Wexpansion-to-defined -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -isystem /root/qemu-5.2+dfsg/linux-headers -isystem linux-headers -iquote /root/qemu-5.2+dfsg/tcg/i386 -iquote . -iquote /root/qemu-5.2+dfsg -iquote /root/qemu-5.2+dfsg/accel/tcg -iquote /root/qemu-5.2+dfsg/include -iquote /root/qemu-5.2+dfsg/disas/libvixl -pthread -fPIE -DSTRUCT_IOVEC_DEFINED -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DNCURSES_WIDECHAR -MD -MQ libcommon.fa.p/disas_nanomips.cpp.o -MF libcommon.fa.p/disas_nanomips.cpp.o.d -o libcommon.fa.p/disas_nanomips.cpp.o -c ../../disas/nanomips.cpp With that I have a test env... Doko asked me to test https://launchpad.net/ubuntu/+source/gcc-10/10.2.1-19ubuntu1/+build/20995220/+files/g++-10_10.2.1-19ubuntu1_amd64.deb That fails as well, but also good as well as bad case have 10.10.2.1-20ubuntu1 It must be something else. The difference were ~340 packages I was upgrading them to spot what broke it. I eventually found glib 2.66 -> 2.67 to break it. libglib2.0-0/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-bin/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-data/hirsute-proposed 2.67.4-1 all [upgradable from: 2.66.4-1] libglib2.0-dev-bin/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] libglib2.0-dev/hirsute-proposed 2.67.4-1 amd64 [upgradable from: 2.66.4-1] Old: /*  * We can only use __typeof__ on GCC >= 4.8, and not when compiling C++. Since  * __typeof__ is used in a few places in GLib, provide a pre-processor symbol  * to factor the check out from callers.  *  * This symbol is private.  */ #undef g_has_typeof #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && !defined(__cplusplus) #define g_has_typeof #endif New: /*  * We can only use __typeof__ on GCC >= 4.8, and not when compiling C++. Since  * __typeof__ is used in a few places in GLib, provide a pre-processor symbol  * to factor the check out from callers.  *  * This symbol is private.  */ #undef glib_typeof #if !defined(__cplusplus) && \      ((defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))) || \       defined(__clang__)) #define glib_typeof(t) __typeof__ (t) #elif defined(__cplusplus) && __cplusplus >= 201103L /* C++11 decltype() is close enough for our usage */ #include <type_traits> <--- THIS IS WHAT BREAKS US #define glib_typeof(t) typename std::remove_reference<decltype (t)>::type #define glib_typeof_2_68 #endif On the glib side this is due to: https://gitlab.gnome.org/GNOME/glib/-/issues/2331 Also related: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1935 https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/J3P4TRHLWNDIKXF76OLYZNAPTABCZ3U5/#7LXFUDBBBIT23FE44QJYWX3I7U4EHW6M Qemu try to fix/discussion at: https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg07294.html This won't be the final solution, but it gets things going for the time being. glib try to fix (also seems not to be ok for upstream, but would get everything going for now). Thanks Laney btw: https://gitlab.gnome.org/iainl/glib/-/commit/b865b76c01a35fb8dbffb9bc2907acf341a31aba
2021-02-24 07:25:53 Christian Ehrhardt  qemu (Ubuntu): status New Triaged
2021-02-27 01:00:40 Rik Mills bug task added ukui-control-center (Ubuntu)
2021-03-01 16:21:56 Iain Lane glib2.0 (Ubuntu): status New In Progress
2021-03-01 16:21:58 Iain Lane glib2.0 (Ubuntu): assignee Iain Lane (laney)
2021-03-03 02:30:26 Daniel van Vugt glib2.0 (Ubuntu): status In Progress Fix Committed
2021-03-04 01:08:28 handsome_feng ukui-control-center (Ubuntu): status New Triaged
2021-03-05 21:56:51 Launchpad Janitor glib2.0 (Ubuntu): status Fix Committed Fix Released
2021-03-08 06:16:26 Christian Ehrhardt  bug task added open-vm-tools (Ubuntu)
2021-03-08 09:03:19 Launchpad Janitor qemu (Ubuntu): status Triaged Fix Released
2021-03-08 09:03:19 Launchpad Janitor cve linked 2020-35517
2021-03-08 09:03:19 Launchpad Janitor cve linked 2021-20181
2021-03-08 09:03:19 Launchpad Janitor cve linked 2021-20221
2021-03-08 11:49:39 Christian Ehrhardt  bug watch added https://github.com/vmware/open-vm-tools/issues/500
2021-03-08 14:36:26 Balint Reczey bug task added wireshark (Ubuntu)
2021-03-09 09:13:46 Launchpad Janitor open-vm-tools (Ubuntu): status New Confirmed
2021-03-09 09:13:46 Launchpad Janitor wireshark (Ubuntu): status New Confirmed
2021-03-09 09:14:20 Andreas Schultz bug added subscriber Andreas Schultz
2021-03-15 17:05:11 Dimitri John Ledkov wireshark (Ubuntu): status Confirmed In Progress
2021-03-16 04:57:01 Launchpad Janitor wireshark (Ubuntu): status In Progress Fix Released
2021-03-16 04:57:01 Launchpad Janitor cve linked 2021-22191
2021-03-17 07:08:04 Christian Ehrhardt  open-vm-tools (Ubuntu): status Confirmed Fix Released
2021-03-22 07:38:19 Launchpad Janitor merge proposal linked https://code.launchpad.net/~paelzer/ubuntu/+source/qemu/+git/qemu/+merge/399966
2021-03-22 07:41:38 Christian Ehrhardt  merge proposal unlinked https://code.launchpad.net/~paelzer/ubuntu/+source/qemu/+git/qemu/+merge/399966
2021-04-08 16:07:13 Launchpad Janitor ukui-control-center (Ubuntu): status Triaged Fix Released