Bug 23007 – importC: dmd segfaults for extra braces in array initializer

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2022-04-10T10:15:26Z
Last change time
2022-09-15T15:49:17Z
Keywords
ice, ImportC, pull
Assigned to
No Owner
Creator
duser

Comments

Comment #0 by duser — 2022-04-10T10:15:26Z
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
Comment #1 by dlang-bot — 2022-09-15T07:53:53Z
@WalterBright created dlang/dmd pull request #14439 "fix Issue 23007 - importC: dmd segfaults for extra braces in array in…" fixing this issue: - fix Issue 23007 - importC: dmd segfaults for extra braces in array initializer https://github.com/dlang/dmd/pull/14439
Comment #2 by dlang-bot — 2022-09-15T15:49:17Z
dlang/dmd pull request #14439 "fix Issue 23007 - importC: dmd segfaults for extra braces in array in…" was merged into master: - 6a0273e5bbddecbe3dbba24b70f30a6423fcea5e by Walter Bright: fix Issue 23007 - importC: dmd segfaults for extra braces in array initializer https://github.com/dlang/dmd/pull/14439