#1143808 gcc-defaults breaks glaze autopkgtest: ICE

#1143808#5
Date:
2026-08-06 13:03:43 UTC
From:
To:
Dear maintainer(s),

With a recent upload of gcc-defaults the autopkgtest of glaze fails in
testing when that autopkgtest is run with the binary packages of
gcc-defaults from unstable. It passes when run with only packages from
testing. In tabular form:

                        pass            fail
gcc-defaults           from testing    1.233
glaze                  from testing    7.9.1-1
all others             from testing    from testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration of gcc-defaults to
testing [1]. Due to the nature of this issue, I filed this bug report
against both packages. Can you please investigate the situation and
reassign the bug to the right package?

More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=gcc-defaults

https://ci.debian.net/data/autopkgtest/testing/arm64/g/glaze/74064724/log.gz

  83s [ 23%] Building CXX object
tests/reflection/CMakeFiles/enum_test.dir/enum_test.cpp.o
  84s [ 24%] Linking CXX executable size_optimization_symbols
  84s [ 24%] Built target size_optimization_symbols
  84s [ 24%] Building CXX object
tests/roundtrip/CMakeFiles/roundtrip_JSON.dir/roundtrip.cpp.o
  86s [ 25%] Linking CXX executable size_optimization_test
  86s [ 25%] Built target size_optimization_test
  86s [ 25%] Building CXX object
tests/roundtrip/CMakeFiles/roundtrip_BEVE.dir/roundtrip.cpp.o
  88s [ 25%] Linking CXX executable cli_menu_test
  88s [ 25%] Built target cli_menu_test
  88s [ 25%] Building CXX object
tests/stencil/CMakeFiles/stencil_test.dir/stencil_test.cpp.o
  89s In file included from
/tmp/autopkgtest.BDEPyO/build.HZh/src/tests/jmespath/jmespath.cpp:4:
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:
In instantiation of ‘consteval auto glz::jmespath::tokenize_as_array()
[with const std::string_view& expression = S]’:
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:815:68:
   required from ‘glz::error_ctx glz::read_jmespath(T&&, Buffer&&) [with
string_literal<...auto...> Path = string_literal<8>{"address"}; auto
Options = opts{10, true, false, true, true, false, false, false, false,
0}; T = std::__cxx11::basic_string<char>&; Buffer =
std::__cxx11::basic_string<char>&]’
  89s   815 |       static constexpr auto tokens =
jmespath::tokenize_as_array<S>();
  89s       |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/tests/jmespath/jmespath.cpp:57:41:
   required from here
  89s    57 |       ec = glz::read_jmespath<"address">(address, buffer);
  89s       |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:264:29:
   in ‘constexpr’ expansion of
‘0->glz::jmespath::tokenize_as_array<glz::read_jmespath<string_literal<8>{"address"}>(std::__cxx11::basic_string<char>&,
std::__cxx11::basic_string<char>&)::S>()::<lambda()>()’
  89s   264 |          constexpr auto N = [] {
  89s       |                             ^~~~
  89s   265 |             std::vector<std::string_view> tokens;
  89s       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  89s   266 |             auto err = tokenize_full_jmespath(expression,
tokens);
  89s       |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  89s   267 |             if (err != tokenization_error::none) {
  89s       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  89s   268 |                std::abort();
  89s       |                ~~~~~~~~~~~~~
  89s   269 |             }
  89s       |             ~
  89s   270 |             return tokens.size();
  89s       |             ~~~~~~~~~~~~~~~~~~~~~
  89s   271 |          }();
  89s       |          ~
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:266:46:
   in ‘constexpr’ expansion of ‘glz::jmespath::tokenize_full_jmespath(S,
tokens)’
  89s   266 |             auto err = tokenize_full_jmespath(expression,
tokens);
  89s       |
~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:223:60:
   in ‘constexpr’ expansion of
‘glz::jmespath::tokenize_jmes_path(remaining)’
  89s   223 |             tokenization_result result =
tokenize_jmes_path(remaining);
  89s       |
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
  89s
/tmp/autopkgtest.BDEPyO/build.HZh/src/include/glaze/json/jmespath.hpp:223:60:
internal compiler error: Segmentation fault

#1143808#24
Date:
2026-08-09 14:30:45 UTC
From:
To:
Steps to reproduce:
Host-Arch must be not x86_64

carlo@m2nux:~/dev/debian/glaze$ g++-16 -std=c++23 -freport-bug -c tests/jmespath/jmespath.cpp -I include
In file included from tests/jmespath/jmespath.cpp:4:
include/glaze/json/jmespath.hpp: In instantiation of ‘consteval auto glz::jmespath::tokenize_as_array() [with const std::string_view& expression = S]’:
include/glaze/json/jmespath.hpp:815:68:   required from ‘glz::error_ctx glz::read_jmespath(T&&, Buffer&&) [with string_literal<...auto...> Path = string_literal<8>{"address"}; auto Options = opts{10, true, false, true, true, false, false, false, false, 0}; T = std::__cxx11::basic_string<char>&; Buffer = std::__cxx11::basic_string<char>&]’
  815 |       static constexpr auto tokens = jmespath::tokenize_as_array<S>();
      |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
tests/jmespath/jmespath.cpp:57:41:   required from here
   57 |       ec = glz::read_jmespath<"address">(address, buffer);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
include/glaze/json/jmespath.hpp:264:29:   in ‘constexpr’ expansion of ‘0->glz::jmespath::tokenize_as_array<glz::read_jmespath<string_literal<8>{"address"}>(std::__cxx11::basic_string<char>&, std::__cxx11::basic_string<char>&)::S>()::<lambda()>()’
  264 |          constexpr auto N = [] {
      |                             ^~~~
  265 |             std::vector<std::string_view> tokens;
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  266 |             auto err = tokenize_full_jmespath(expression, tokens);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  267 |             if (err != tokenization_error::none) {
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  268 |                std::abort();
      |                ~~~~~~~~~~~~~
  269 |             }
      |             ~
  270 |             return tokens.size();
      |             ~~~~~~~~~~~~~~~~~~~~~
  271 |          }();
      |          ~
include/glaze/json/jmespath.hpp:266:46:   in ‘constexpr’ expansion of ‘glz::jmespath::tokenize_full_jmespath(S, tokens)’
  266 |             auto err = tokenize_full_jmespath(expression, tokens);
      |                        ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
include/glaze/json/jmespath.hpp:223:60:   in ‘constexpr’ expansion of ‘glz::jmespath::tokenize_jmes_path(remaining)’
  223 |             tokenization_result result = tokenize_jmes_path(remaining);
      |                                          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
include/glaze/json/jmespath.hpp:223:60: internal compiler error: Segmentation fault
0x13387af internal_error(char const*, ...)
	../../src/gcc/diagnostic-global-context.cc:787
0xb1272f crash_signal
	../../src/gcc/toplev.cc:325
0x171723c contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*)
	../../src/gcc/tree.h:3925
0x171723c reduced_constant_expression_p(tree_node*, tree_node*)
	../../src/gcc/cp/constexpr.cc:4807
0x17172f3 reduced_constant_expression_p(tree_node*, tree_node*)
	../../src/gcc/cp/constexpr.cc:4764
0x1a205bb cxx_eval_call_expression
	../../src/gcc/cp/constexpr.cc:4640
0x1710593 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:9391
0x1c24143 cxx_eval_store_expression
	../../src/gcc/cp/constexpr.cc:8342
0x1710c43 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:9572
0x171060b cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10113
0x17113e3 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:9617
0x1710f2b cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:9669
0x171169f cxx_eval_statement_list
	../../src/gcc/cp/constexpr.cc:8668
0x171169f cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10380
0x1711327 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10389
0x28621cb cxx_eval_loop_expr(constexpr_ctx const*, tree_node*, bool*, bool*, tree_node**) [clone .isra.0]
	../../src/gcc/cp/constexpr.cc:8756
0x171197b cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10480
0x171169f cxx_eval_statement_list
	../../src/gcc/cp/constexpr.cc:8668
0x171169f cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10380
0x1711327 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*, value_cat, bool*, bool*, tree_node**)
	../../src/gcc/cp/constexpr.cc:10389
/usr/libexec/gcc/aarch64-linux-gnu/16/cc1plus -quiet -I include -imultiarch aarch64-linux-gnu -D_GNU_SOURCE tests/jmespath/jmespath.cpp -quiet -dumpbase jmespath.cpp -dumpbase-ext .cpp -mlittle-endian -mabi=lp64 -std=c++23 -freport-bug -fasynchronous-unwind-tables -o /tmp/ccZa3Y2H.s
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-16/README.Bugs> for instructions.
The bug is not reproducible, so it is likely a hardware or OS problem.

Best,

#1143808#29
Date:
2026-08-11 06:53:46 UTC
From:
To:
[...]

so no, this doesn't reproduce.

#1143808#32
Date:
2026-08-11 06:53:46 UTC
From:
To:
[...]

so no, this doesn't reproduce.

#1143808#37
Date:
2026-08-12 06:22:22 UTC
From:
To:
Hi,

Have you tried it on a porterbox? I do not have access but I can
reproduce it on aarch64.
Not sure what the phrase actually means in GCC but I though this was
some kind of last-resort reason.

Best,

#1143808#42
Date:
2026-08-13 21:56:36 UTC
From:
To:
control: reassign -1 gcc-16
control: found -1 gcc-16/16.1.0-3
control: fixed -1 gcc-16/16.2.0-1

Hi,

The problem is reproducible with gcc-16 16.1.0-3 but not 16.2.0-1.
Reassigning the bug accordingly.

Regards
Aurelien

#1143808#55
Date:
2026-08-22 07:52:21 UTC
From:
To:
Hi, thanks for reassigning and can confirm that glaze builds fine with
16.2.0.

Best,