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