https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97372
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Segmentation fault using |[8/9/10/11 Regression] ICE |Tracy 0.7.3 in template |in Tracy 0.7.3 in template |class |class since | |r8-2836-gb54d4018b17c8e7b CC| |jason at gcc dot gnu.org, | |marxin at gcc dot gnu.org --- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> --- I'm woried that both reduced code snippets are an invalid code (at least clang rejects that). I reduced that to a valid test-case: $ cat gcc_segfault_repro.ii class Lockable { public: Lockable(int *); }; template <typename> class ThreadTask2 { Lockable _state_mutex{[]() -> int * { static int srcloc; return 0; }()}; public: ThreadTask2() {} }; void x() { ThreadTask2<int> foo; } $ g++ gcc_segfault_repro.ii -c gcc_segfault_repro.ii: In instantiation of ‘ThreadTask2< <template-parameter-1-1> >::ThreadTask2() [with <template-parameter-1-1> = int]’: gcc_segfault_repro.ii:10:29: required from here gcc_segfault_repro.ii:6:52: internal compiler error: Segmentation fault 6 | Lockable _state_mutex{[]() -> int * { static int srcloc; return 0; }()}; | ^~~~~~ 0x10107ff crash_signal /home/marxin/Programming/gcc/gcc/toplev.c:330 0x7ffff788e6bf ??? /usr/src/debug/glibc-2.32-1.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0xa29374 most_general_template(tree_node*) /home/marxin/Programming/gcc/gcc/cp/pt.c:24621 0xa297a7 enclosing_instantiation_of /home/marxin/Programming/gcc/gcc/cp/pt.c:14264 0xa43cf7 tsubst_decl /home/marxin/Programming/gcc/gcc/cp/pt.c:14632 0xa4a54a tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18086 0xa483de tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17992 0xa479d1 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18309 0xa479d1 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18309 0xa72876 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17977 0xa72876 tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*) /home/marxin/Programming/gcc/gcc/cp/pt.c:19259 0xa3d423 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:20593 0xa3bcfc tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:19925 0xa3b0eb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:20456 0x998191 get_nsdmi(tree_node*, bool, int) /home/marxin/Programming/gcc/gcc/cp/init.c:605 0x999381 perform_member_init /home/marxin/Programming/gcc/gcc/cp/init.c:772 0x999381 emit_mem_initializers(tree_node*) /home/marxin/Programming/gcc/gcc/cp/init.c:1388 0xa4973c tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17997 0xa479d1 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18309 0xa4eca6 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17977 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Started with r8-2836-gb54d4018b17c8e7b.