Bug 23006 – importC: dmd segfaults on static initializer for multi-dimensional array inside struct

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2022-04-10T10:06:09Z
Last change time
2022-09-15T09:51:48Z
Keywords
ice-on-valid-code, ImportC, pull
Assigned to
No Owner
Creator
duser

Comments

Comment #0 by duser — 2022-04-10T10:06:09Z
//int x[1][1] = {{1}}; // works struct { int x[1][1]; } y = { {{1}} }; --- Program received signal SIGSEGV, Segmentation fault. 0x0000555555822310 in structs (this=0x7fffffffcf10, ts=0x7ffff6d5a900) at src/dmd/initsem.d:699 699 if (ex.op == EXP.error) (gdb) i lo vd = 0x7ffff757f8f0 ex = 0x0 iz = 0x7ffff757fb60 tm = 0x7ffff757f7d0 di = {designatorList = 0x0, initializer = 0x7ffff757fb60} fieldi = 0 ie = 0x7fffffffce60 sle = 0x555555ab02c5 <OutBuffer::~OutBuffer()+24> tx = 0x7ffff6d5a900 elems = {0x0} elements = 0x7ffff6d5b040 nfields = 1 sd = 0x7ffff6d5a6f0 (gdb) bt #0 0x0000555555822310 in structs (this=0x7fffffffcf10, ts=0x7ffff6d5a900) at src/dmd/initsem.d:699 #1 0x0000555555821709 in visitC (this=0x7fffffffd020, ci=0x7ffff757fbc0) at src/dmd/initsem.d:722 #2 0x0000555555735372 in initializerSemantic(Initializer*, Scope*, Type*&, NeedInterpret) (init=0x7ffff757fbc0, sc=0x7ffff6d5a5a0, tx=@0x7ffff757fc80: 0x7ffff6d5a900, needInterpret=dmd.init.NeedInterpret.INITinterpret) at src/dmd/initsem.d:926 #3 0x0000555555781817 in DsymbolSemanticVisitor::visit(VarDeclaration*) (this=0x7fffffffd3b0, dsym=0x7ffff757fc20) at src/dmd/dsymbolsem.d:1143 #4 0x0000555555689bdc in VarDeclaration::accept(Visitor*) (this=0x7ffff757fc20, v=0x7fffffffd3b0) at src/dmd/declaration.d:1653 #5 0x00005555556c84fb in dsymbolSemantic(Dsymbol*, Scope*) (dsym=0x7ffff757fc20, sc=0x7ffff6d5a350) at src/dmd/dsymbolsem.d:105 #6 0x000055555578d2c0 in DsymbolSemanticVisitor::attribSemantic(AttribDeclaration*) (this=0x7fffffffd4a0, ad=0x7ffff757fd50) at src/dmd/dsymbolsem.d:1432 #7 0x000055555577cb96 in DsymbolSemanticVisitor::visit(AttribDeclaration*) (this=0x7fffffffd4a0, atd=0x7ffff757fd50) at src/dmd/dsymbolsem.d:1444 #8 0x00005555558d14e6 in ParseTimeVisitor<ASTCodegen>::visit(LinkDeclaration*) (this=0x7fffffffd4a0, s=0x7ffff757fd50) at src/dmd/parsetimevisitor.d:71 #9 0x000055555568a15c in LinkDeclaration::accept(Visitor*) (this=0x7ffff757fd50, v=0x7fffffffd4a0) at src/dmd/attrib.d:434 #10 0x00005555556c84fb in dsymbolSemantic(Dsymbol*, Scope*) (dsym=0x7ffff757fd50, sc=0x7ffff757ffb0) at src/dmd/dsymbolsem.d:105 #11 0x000055555578e3f9 in DsymbolSemanticVisitor.__lambda2 (this=0x7fffffffd550, s=0x7ffff757fd50) at src/dmd/dsymbolsem.d:1995 #12 0x00005555556e26d8 in dmd.dsymbol.foreachDsymbol(dmd.root.array.Array!(dmd.dsymbol.Dsymbol).Array*, scope void(dmd.dsymbol.Dsymbol) delegate) (symbols=0x7ffff757fd30, dg=...) at src/dmd/dsymbol.d:105 #13 0x00005555557860e0 in DsymbolSemanticVisitor::visit(Module*) (this=0x7fffffffd5d0, m=0x7ffff757f4e0) at src/dmd/dsymbolsem.d:1992 #14 0x000055555569a387 in Module::accept(Visitor*) (this=0x7ffff757f4e0, v=0x7fffffffd5d0) at src/dmd/dmodule.d:1450 #15 0x00005555556c84fb in dsymbolSemantic(Dsymbol*, Scope*) (dsym=0x7ffff757f4e0, sc=0x0) at src/dmd/dsymbolsem.d:105 #16 0x00005555556c39ef in dmd.mars.tryMain(ulong, const(char)**, ref dmd.globals.Param) (argc=3, argv=0x7fffffffdd28, params=...) at src/dmd/mars.d:439 #17 0x00005555556cffd0 in D main (_param_0=...) at src/dmd/mars.d:958 --- line at current commit: https://github.com/dlang/dmd/blob/863fec775e2dd8b8f4788849d7b8923b70dcf279/src/dmd/initsem.d#L699
Comment #1 by dlang-bot — 2022-09-15T07:49:42Z
@WalterBright created dlang/dmd pull request #14438 "fix Issue 23006 - importC: dmd segfaults on static initializer for mu…" fixing this issue: - fix Issue 23006 - importC: dmd segfaults on static initializer for multi-dimensional array inside struct https://github.com/dlang/dmd/pull/14438
Comment #2 by dlang-bot — 2022-09-15T09:51:48Z
dlang/dmd pull request #14438 "fix Issue 23006 - importC: dmd segfaults on static initializer for mu…" was merged into master: - d967bf9603235de02ed6611b407f9231d36ee1c5 by Walter Bright: fix Issue 23006 - importC: dmd segfaults on static initializer for multi-dimensional array inside struct https://github.com/dlang/dmd/pull/14438