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.

Reply via email to