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.