[Issue 23007] New: importC: dmd segfaults for extra braces in array initializer

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Apr 10 10:15:26 UTC 2022


https://issues.dlang.org/show_bug.cgi?id=23007

          Issue ID: 23007
           Summary: importC: dmd segfaults for extra braces in array
                    initializer
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: ice, ImportC
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: duser at neet.fi
                CC: duser at neet.fi

int x[1] = {{1}};

---
Program received signal SIGSEGV, Segmentation fault.
0x00005555558bb178 in visitC (this=0x7fffffffcf28, ci=0x7ffff757f870) at
src/dmd/todt.d:251
251             array(ci.type,
cast(size_t)ci.type.isTypeSArray().dim.toInteger());
(gdb) i lo
i = 0
dil = {{designatorList = 0x0, initializer = 0x7ffff757f840}}
(gdb) i ar
this = 0x7fffffffcf28
ci = 0x7ffff757f870
(gdb) bt
#0  0x00005555558bb178 in visitC (this=0x7fffffffcf28, ci=0x7ffff757f870) at
src/dmd/todt.d:251
#1  0x00005555558b9d04 in Initializer_toDt(Initializer*, DtBuilder&)
(init=0x7ffff757f870, dtb=...) at src/dmd/todt.d:261
#2  0x00005555558ba027 in visitArray (this=0x7fffffffd118, ai=0x7ffff6d5a680)
at src/dmd/todt.d:115
#3  0x00005555558b9cda in Initializer_toDt(Initializer*, DtBuilder&)
(init=0x7ffff6d5a680, dtb=...) at src/dmd/todt.d:259
#4  0x00005555558c346d in
toObjFile::ToObjFile::initializerToDt(VarDeclaration*, DtBuilder&)
(vd=0x7ffff757f930, dtb=...) at src/dmd/toobj.d:865
#5  0x00005555558c0ba4 in toObjFile::ToObjFile::visit(VarDeclaration*)
(this=0x7fffffffd2b0, vd=0x7ffff757f930) at src/dmd/toobj.d:631
#6  0x0000555555689bdc in VarDeclaration::accept(Visitor*)
(this=0x7ffff757f930, v=0x7fffffffd2b0) at src/dmd/declaration.d:1653
#7  0x00005555558c0532 in toObjFile::ToObjFile::visit(AttribDeclaration*)
(this=0x7fffffffd2b0, ad=0x7ffff757fa60) at src/dmd/toobj.d:748
#8  0x00005555558d14e6 in ParseTimeVisitor<ASTCodegen>::visit(LinkDeclaration*)
(this=0x7fffffffd2b0, s=0x7ffff757fa60) at src/dmd/parsetimevisitor.d:71
#9  0x000055555568a15c in LinkDeclaration::accept(Visitor*)
(this=0x7ffff757fa60, v=0x7fffffffd2b0) at src/dmd/attrib.d:434
#10 0x00005555556b3832 in toObjFile(Dsymbol*, bool) (ds=0x7ffff757fa60,
multiobj=false) at src/dmd/toobj.d:1008
#11 0x00005555558a64a3 in genObjFile(Module*, bool) (m=0x7ffff757f4e0,
multiobj=false) at src/dmd/glue.d:522
#12 0x00005555556c1d59 in dmd.glue.generateCodeAndWrite(dmd.dmodule.Module[],
const(char)*[], const(char)[], const(char)[], bool, bool, bool, bool, bool)
(modules=..., libmodules=..., libname=..., objdir=..., lib=false, obj=true,
oneobj=false, multiobj=false, verbose=false) at src/dmd/glue.d:137
#13 0x00005555556c462c in dmd.mars.tryMain(ulong, const(char)**, ref
dmd.globals.Param) (argc=3, argv=0x7fffffffdd28, params=...) at
src/dmd/mars.d:574
#14 0x00005555556cffd0 in D main (_param_0=...) at src/dmd/mars.d:958
---

(not visible from this output but "ci.type.isTypeSArray()" returns null in the
expression)

line at current commit:
https://github.com/dlang/dmd/blob/863fec775e2dd8b8f4788849d7b8923b70dcf279/src/dmd/todt.d#L251

--


More information about the Digitalmars-d-bugs mailing list