[Issue 19691] ICE on null default value for struct parameter in constructor

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Feb 28 12:37:21 UTC 2019


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

Basile-z <b2.temp at gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |b2.temp at gmx.com
           Hardware|x86                         |All
                 OS|Windows                     |All
           Severity|normal                      |regression

--- Comment #1 from Basile-z <b2.temp at gmx.com> ---
That's a regression, 2.075.z: https://run.dlang.io/is/vqQyCh

- The bug doesn't happen if you change the order of declaration, i.e S2 before
S1
- The bug happens because of a null scope:

Program received signal SIGSEGV, Segmentation fault.
0x00000000005b6a01 in DsymbolSemanticVisitor::visit(CtorDeclaration*)
(this=0x7fffffff97b0, 
    ctd=0x7ffff6d46370) at dmd/dsymbolsem.d:3708
3708            ctd.parent = sc.parent;
Missing separate debuginfos, use: dnf debuginfo-install
libgcc-8.2.1-6.fc28.x86_64
(gdb) 
(gdb) bt
#0  0x00000000005b6a01 in DsymbolSemanticVisitor::visit(CtorDeclaration*)
(this=0x7fffffff97b0, 
    ctd=0x7ffff6d46370) at dmd/dsymbolsem.d:3708
#1  0x000000000060fdf2 in CtorDeclaration::accept(Visitor*)
(this=0x7ffff6d46370, v=0x7fffffff97b0)
    at dmd/func.d:3373
#2  0x00000000005ac291 in dsymbolSemantic(Dsymbol*, Scope*)
(dsym=0x7ffff6d46370, sc=0x0) <--- here, null scope
    at dmd/dsymbolsem.d:365
#3  0x00000000005c345d in
_D3dmd9dtemplate15functionResolveFPSQBi11declaration5MatchCQCf7dsymbol7DsymbolSQCz7globals3LocPSQDq6dscope5ScopePSQEi4root5array__T5ArrayTCQFhQz10rootobject10RootObjectZQBmCQGp5mtype4TypePSQHfQCxQCv__TQCsTCQHw10expression10ExpressionZQDzPPxaZ13applyFunctionMFCQJy4func15FuncDeclarationZi
(__capture=0x7fffffff9a00, fd=0x7ffff6d46370) at dmd/dtemplate.d:2411
#4  0x00000000005c481e in
_D3dmd9dtemplate15functionResolveFPSQBi11declaration5MatchCQCf7dsymbol7DsymbolSQCz7globals3LocPSQDq6dscope5ScopePSQEi4root5array__T5ArrayTCQFhQz10rootobject10RootObjectZQBmCQGp5mtype4TypePSQHfQCxQCv__TQCsTCQHw10expression10ExpressionZQDzPPxaZ10__lambda11MFQHqZi
(
    __capture=0x7fffffff9a00, s=0x7ffff6d46370) at dmd/dtemplate.d:2814
#5  0x000000000060e20c in
_D3dmd4func13overloadApplyFCQBa7dsymbol7DsymbolMDFQxZiPSQCc6dscope5ScopeZi
(sc=0x7ffff6aa55f0, dg=..., fstart=0x7ffff6d45e00) at dmd/func.d:2566
---Type <return> to continue, or q <return> to quit---
#6  0x00000000005c3149 in
_D3dmd9dtemplate15functionResolveFPSQBi11declaration5MatchCQCf7dsymbol7DsymbolSQCz7globals3LocPSQDq6dscope5ScopePSQEi4root5array__T5ArrayTCQFhQz10rootobject10RootObjectZQBmCQGp5mtype4TypePSQHfQCxQCv__TQCsTCQHw10expression10ExpressionZQDzPPxaZv
(pMessage=0x0, 
    fargs=0x7ffff6aa4b70, tthis=0x7ffff6d46860, tiargs=0x0, sc=0x7ffff6aa55f0,
loc=..., 
    dstart=0x7ffff6d45e00, m=0x7fffffff9a48) at dmd/dtemplate.d:2818
#7  0x000000000060e522 in
_D3dmd4func15resolveFuncCallFKxSQBe7globals3LocPSQBv6dscope5ScopeCQCm7dsymbol7DsymbolPSQDh4root5array__T5ArrayTCQEgQz10rootobject10RootObjectZQBmCQFo5mtype4TypePSQGeQCxQCv__TQCsTCQGv10expression10ExpressionZQDzEQIbQIa15FuncResolveFlagZCQJaQIz15FuncDeclaration
(
    flags=0 '\000', fargs=0x7ffff6aa4b70, tthis=0x7ffff6d46860, tiargs=0x0,
s=0x7ffff6d45e00, 
    sc=0x7ffff6aa55f0, loc=...) at dmd/func.d:2721
#8  0x00000000005f1eba in ExpressionSemanticVisitor::visit(CallExp*)
(this=0x7fffffffa4b8, 
    exp=0x7ffff6aa5950) at dmd/expressionsem.d:4327
#9  0x00000000005e0656 in CallExp::accept(Visitor*) (this=0x7ffff6aa5950,
v=0x7fffffffa4b8)
    at dmd/expression.d:4892
#10 0x0000000000606333 in expressionSemantic(Expression*, Scope*)
(e=0x7ffff6aa5950, 
    sc=0x7ffff6aa55f0) at dmd/expressionsem.d:10777
---Type <return> to continue, or q <return> to quit---
#11 0x00000000005f1972 in ExpressionSemanticVisitor::visit(CallExp*)
(this=0x7fffffffac48, 
    exp=0x7ffff6aa4b20) at dmd/expressionsem.d:4193
#12 0x00000000005e0656 in CallExp::accept(Visitor*) (this=0x7ffff6aa4b20,
v=0x7fffffffac48)
    at dmd/expression.d:4892
#13 0x0000000000606333 in expressionSemantic(Expression*, Scope*)
(e=0x7ffff6aa4b20, 
    sc=0x7ffff6aa55f0) at dmd/expressionsem.d:10777
#14 0x00000000006a1cce in StatementSemanticVisitor::visit(ExpStatement*)
(this=0x7fffffffad18, 
    s=0x7ffff6aa4b00) at dmd/statementsem.d:176
#15 0x00000000006812ae in ExpStatement::accept(Visitor*) (this=0x7ffff6aa4b00,
v=0x7fffffffad18)
    at dmd/statement.d:738
#16 0x00000000006a1bb7 in statementSemantic(Statement*, Scope*)
(s=0x7ffff6aa4b00, 
    sc=0x7ffff6aa55f0) at dmd/statementsem.d:125
#17 0x00000000006a1f90 in StatementSemanticVisitor::visit(CompoundStatement*) (
    this=0x7fffffffb048, cs=0x7ffff6aa4ac0) at dmd/statementsem.d:234
#18 0x0000000000681b0e in CompoundStatement::accept(Visitor*)
(this=0x7ffff6aa4ac0, 
    v=0x7fffffffb048) at dmd/statement.d:935
---Type <return> to continue, or q <return> to quit---
#19 0x00000000006a1bb7 in statementSemantic(Statement*, Scope*)
(s=0x7ffff6aa4ac0, 
    sc=0x7ffff6aa55f0) at dmd/statementsem.d:125
#20 0x00000000006b6e9e in Semantic3Visitor::visit(FuncDeclaration*)
(this=0x7fffffffbba0, 
    funcdecl=0x7ffff6aa4680) at dmd/semantic3.d:573
#21 0x00000000006b9c1f in Semantic3Visitor::visit(CtorDeclaration*)
(this=0x7fffffffbba0, 
    ctor=0x7ffff6aa4680) at dmd/semantic3.d:1318
#22 0x000000000060fdf2 in CtorDeclaration::accept(Visitor*)
(this=0x7ffff6aa4680, v=0x7fffffffbba0)
    at dmd/func.d:3373
#23 0x00000000006b57b5 in semantic3(Dsymbol*, Scope*) (dsym=0x7ffff6aa4680,
sc=0x7ffff6aa3ed0)
    at dmd/semantic3.d:82
#24 0x0000000000609482 in FuncDeclaration::functionSemantic3()
(this=0x7ffff6aa4680)
    at dmd/func.d:420
#25 0x0000000000609398 in FuncDeclaration::functionSemantic()
(this=0x7ffff6aa4680)
    at dmd/func.d:394
#26 0x000000000060e568 in
_D3dmd4func15resolveFuncCallFKxSQBe7globals3LocPSQBv6dscope5ScopeCQCm7dsymbol7DsymbolPSQDh4root5array__T5ArrayTCQEgQz10rootobject10RootObjectZQBmCQFo5mtype4TypePSQGeQCxQCv__T---Type
<return> to continue, or q <return> to quit---
QCsTCQGv10expression10ExpressionZQDzEQIbQIa15FuncResolveFlagZCQJaQIz15FuncDeclaration
(
    flags=0 '\000', fargs=0x7ffff6aa32d0, tthis=0x7ffff6d45b60, tiargs=0x0,
s=0x7ffff6d45800, 
    sc=0x7ffff6aa3070, loc=...) at dmd/func.d:2729
#27 0x00000000005f1eba in ExpressionSemanticVisitor::visit(CallExp*)
(this=0x7fffffffc6c8, 
    exp=0x7ffff6aa3280) at dmd/expressionsem.d:4327
#28 0x00000000005e0656 in CallExp::accept(Visitor*) (this=0x7ffff6aa3280,
v=0x7fffffffc6c8)
    at dmd/expression.d:4892
#29 0x0000000000606333 in expressionSemantic(Expression*, Scope*)
(e=0x7ffff6aa3280, 
    sc=0x7ffff6aa3070) at dmd/expressionsem.d:10777
#30 0x0000000000625005 in
_D3dmd7initsem19initializerSemanticRCQBj4init11InitializerPSQCg6dscope5ScopeCQCx5mtype4TypeEQDmQCd13NeedInterpretZ8visitExpMFCQEuQDl14ExpInitializerZQEj
(
    __capture=0x7fffffffc850, i=0x7ffff6aa3180) at dmd/initsem.d:457
#31 0x0000000000623483 in initializerSemantic(Initializer*, Scope*, Type*,
NeedInterpret) (
    init=0x7ffff6aa3180, sc=0x7ffff6aa3070, t=0x7ffff6d45b60,
needInterpret=<incomplete type>)
    at dmd/initsem.d:523
#32 0x000000000068b06e in
_D3dmd7typesem12typeSemanticRCQBc5mtype4TypeSQBr7globals3LocPSQCi6dscope5S---Type
<return> to continue, or q <return> to quit---
copeZ13visitFunctionMFCQDrQCp12TypeFunctionZQDl (__capture=0x7fffffffcb70,
mtype=0x7ffff6d462b0)
    at dmd/typesem.d:1353
#33 0x0000000000688bea in typeSemantic(Type*, Loc, Scope*) (t=0x7ffff6d462b0,
loc=..., 
    sc=0x7ffff6aa2d70) at dmd/typesem.d:1814
#34 0x00000000005b4bd7 in
DsymbolSemanticVisitor::funcDeclarationSemantic(FuncDeclaration*) (
    this=0x7fffffffd240, funcdecl=0x7ffff6d46370) at dmd/dsymbolsem.d:3093
#35 0x00000000005b6b24 in DsymbolSemanticVisitor::visit(CtorDeclaration*)
(this=0x7fffffffd240, 
    ctd=0x7ffff6d46370) at dmd/dsymbolsem.d:3735
#36 0x000000000060fdf2 in CtorDeclaration::accept(Visitor*)
(this=0x7ffff6d46370, v=0x7fffffffd240)
    at dmd/func.d:3373
#37 0x00000000005ac291 in dsymbolSemantic(Dsymbol*, Scope*)
(dsym=0x7ffff6d46370, 
    sc=0x7ffff6aa2680) at dmd/dsymbolsem.d:365
#38 0x00000000005b8f34 in
_D3dmd10dsymbolsem22DsymbolSemanticVisitor5visitMRCQBx7dstruct17StructDeclarationZ__T9__lambda5TCQDr7dsymbol7DsymbolZQBgMFQBaZv
(__capture=0x7fffffffd440, s=0x7ffff6d46370)
    at dmd/dsymbolsem.d:4295
#39 0x00000000005a66bc in
_D3dmd7dsymbol14foreachDsymbolFPSQBf4root5array__T5ArrayTCQCeQCd7DsymbolZQ---Type
<return> to continue, or q <return> to quit---
xMDFQvZvZv (dg=..., symbols=0x7ffff6d45c10) at dmd/dsymbol.d:97
#40 0x00000000005b88a6 in DsymbolSemanticVisitor::visit(StructDeclaration*)
(this=0x7fffffffd490, 
    sd=0x7ffff6d46620) at dmd/dsymbolsem.d:4295
#41 0x00000000005a6142 in StructDeclaration::accept(Visitor*)
(this=0x7ffff6d46620, 
    v=0x7fffffffd490) at dmd/dstruct.d:592
#42 0x00000000005ac291 in dsymbolSemantic(Dsymbol*, Scope*)
(dsym=0x7ffff6d46620, 
    sc=0x7ffff6d46af0) at dmd/dsymbolsem.d:365
#43 0x00000000005b16a8 in
_D3dmd10dsymbolsem22DsymbolSemanticVisitor5visitMRCQBx7dmodule6ModuleZ__T9__lambda2TCQDf7dsymbol7DsymbolZQBgMFQBaZv
(__capture=0x7fffffffd540, s=0x7ffff6d46620)
    at dmd/dsymbolsem.d:1979
#44 0x00000000005a66bc in
_D3dmd7dsymbol14foreachDsymbolFPSQBf4root5array__T5ArrayTCQCeQCd7DsymbolZQxMDFQvZvZv
(dg=..., symbols=0x7ffff6d45030) at dmd/dsymbol.d:97
#45 0x00000000005b1634 in DsymbolSemanticVisitor::visit(Module*)
(this=0x7fffffffd590, 
    m=0x7ffff6d44d80) at dmd/dsymbolsem.d:1976
#46 0x0000000000594d7a in Module::accept(Visitor*) (this=0x7ffff6d44d80,
v=0x7fffffffd590)
    at dmd/dmodule.d:1290
---Type <return> to continue, or q <return> to quit---
#47 0x00000000005ac291 in dsymbolSemantic(Dsymbol*, Scope*)
(dsym=0x7ffff6d44d80, sc=0x0)
    at dmd/dsymbolsem.d:365
#48 0x0000000000649553 in _D3dmd4mars7tryMainFmPPxaKSQz7globals5ParamZi
(params=..., 
    argv=0x7fffffffdf98, argc=2) at dmd/mars.d:560
#49 0x000000000064aaf5 in D main () at dmd/mars.d:859

Maybe it's possible at some point to launch the semantic of the other thing
when the scope is null probably at step #3 or #4

--


More information about the Digitalmars-d-bugs mailing list