Bug 21025 – Segfault for function contract -preview=dip1021
Status
RESOLVED
Resolution
FIXED
Severity
critical
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2020-07-07T16:33:35Z
Last change time
2023-07-02T13:41:38Z
Keywords
pull
Assigned to
No Owner
Creator
moonlightsentinel
Comments
Comment #0 by moonlightsentinel — 2020-07-07T16:33:35Z
The following code causes a segfault in DMD when compiled with -preview=dip1021:
==================================
void uniq()(int[] r)
if (binaryFun(r, r)) {}
bool binaryFun(T, U)(T, U)
{
return true;
}
void generateStatements()
{
uniq([]);
}
==================================
gdb $DMD -batch -ex "run -c -o- -preview=dip1021" -ex bt
Program received signal SIGSEGV, Segmentation fault.
0x00000000083b93f4 in dmd.func.FuncDeclaration.setUnsafe() (this=0x0) at dmd/func.d:1402
1402 if (flags & FUNCFLAG.safetyInprocess)
#0 0x00000000083b93f4 in dmd.func.FuncDeclaration.setUnsafe() (this=0x0) at dmd/func.d:1402
#1 0x00000000083795ca in _D3dmd6escape21checkMutableArgumentsFPSQBl6dscope5ScopeCQCc4func15FuncDeclarationCQDc5mtype12TypeFunctionCQEa10expression10ExpressionPSQFd4root5array__T5ArrayTQCcZQlbZ12checkOnePairMFmKSQHcQHbQGxFQGdQFoQErQDwQCxbZ8EscapeByKQBmCQIr11declaration14VarDeclarationQBhbZv (__capture=0x7ffffffe9eb0, of=true, v2=0x7ffffdfb34c0, v=0x7ffffdfb34c0, eb2=..., eb=..., i=0) at dmd/escape.d:167
#2 0x000000000837984b in _D3dmd6escape21checkMutableArgumentsFPSQBl6dscope5ScopeCQCc4func15FuncDeclarationCQDc5mtype12TypeFunctionCQEa10expression10ExpressionPSQFd4root5array__T5ArrayTQCcZQlbZQGfMFmKSQGrQGqQGmFQFsQFdQEgQDlQCmbZ8EscapeBybZv (__capture=0x7ffffffe9eb0, byval=true, eb=..., i=0) at dmd/escape.d:203
#3 0x0000000008379194 in _D3dmd6escape21checkMutableArgumentsFPSQBl6dscope5ScopeCQCc4func15FuncDeclarationCQDc5mtype12TypeFunctionCQEa10expression10ExpressionPSQFd4root5array__T5ArrayTQCcZQlbZb (gag=false, arguments=0x7ffffdfb3690, ethis=0x0, tf=0x8c2fa50, fd=0x7ffffdfb4670, sc=0x7ffffdfb0930) at dmd/escape.d:210
#4 0x0000000008396948 in _D3dmd13expressionsem18functionParametersFKxSQBr7globals3LocPSQCi6dscope5ScopeCQCz5mtype12TypeFunctionCQDx10expression10ExpressionCQEzQCa4TypePSQFm4root5array__T5ArrayTQCoZQlCQGr4func15FuncDeclarationPQCtPQDzZb (peprefix=0x7ffffffeab70, prettype=0x7ffffdfb3610, fd=0x7ffffdfb4670, arguments=0x7ffffdfb3690, tthis=0x0, ethis=0x0, tf=0x8c2fa50, sc=0x7ffffdfb0930, loc=...) at dmd/expressionsem.d:2354
#5 0x000000000839f93a in ExpressionSemanticVisitor::visit(CallExp*) (this=0x7ffffffeacf8, exp=0x7ffffdfb3600) at dmd/expressionsem.d:4999
#6 0x000000000838a3c2 in CallExp::accept(Visitor*) (this=0x7ffffdfb3600, v=0x7ffffffeacf8) at dmd/expression.d:4975
#7 0x00000000083b3c84 in expressionSemantic(Expression*, Scope*) (e=0x7ffffdfb3600, sc=0x7ffffdfb0930) at dmd/expressionsem.d:11497
#8 0x000000000847413a in _D3dmd10staticcond19evalStaticConditionFPSQBo6dscope5ScopeCQCf10expression10ExpressionQBcJbPSQDn4root5array__T5ArrayTQChZQlZ4implMFQCvZb (__capture=0x7ffffffeadd0, e=0x7ffffdfb3600) at dmd/staticcond.d:94
#9 0x0000000008473f90 in _D3dmd10staticcond19evalStaticConditionFPSQBo6dscope5ScopeCQCf10expression10ExpressionQBcJbPSQDn4root5array__T5ArrayTQChZQlZb (negatives=0x7fffff6c6790, errors=@0x7ffffffeaea8: false, e=0x7ffffdfb3600, original=0x7fffff6c6510, sc=0x7ffffdfb0930) at dmd/staticcond.d:124
#10 0x000000000835fcbb in _D3dmd9dtemplate19TemplateDeclaration18evaluateConstraintMFCQCgQCf16TemplateInstancePSQDg6dscope5ScopeQsPSQEa4root5array__T5ArrayTCQEzQz10rootobject10RootObjectZQBmCQGh4func15FuncDeclarationZb (this=0x7fffff6c6660, fd=0x7ffffdfb3110, dedargs=0x7ffffdfb3000, paramscope=0x7ffffdfb0620, sc=0x7ffffdfb0500, ti=0x7ffffdfb2e80) at dmd/dtemplate.d:903
#11 0x0000000008363377 in _D3dmd9dtemplate19TemplateDeclaration27deduceFunctionTemplateMatchMFCQCpQCo16TemplateInstancePSQDp6dscope5ScopeKCQEh4func15FuncDeclarationCQFh5mtype4TypePSQFx4root5array__T5ArrayTCQGw10expression10ExpressionZQBkZEQId7globals5MATCH (this=0x7fffff6c6660, fargs=0x7fffff6c7540, tthis=0x0, fd=@0x7ffffffeb730: 0x7ffffdfb3110, sc=0x7ffffdfb0500, ti=0x7ffffdfb2e80) at dmd/dtemplate.d:2241
#12 0x0000000008365407 in _D3dmd9dtemplate15functionResolveFKSQBi11declaration16MatchAccumulatorCQCr7dsymbol7DsymbolSQDl7globals3LocPSQEc6dscope5ScopePSQEu4root5array__T5ArrayTCQFtQz10rootobject10RootObjectZQBmCQHb5mtype4TypePSQHrQCxQCv__TQCsTCQIi10expression10ExpressionZQDzPPxaZ13applyTemplateMFCQKkQKj19TemplateDeclarationZi (__capture=0x7ffffffeb940, td=0x7fffff6c6660) at dmd/dtemplate.d:2967
#13 0x00000000083658d8 in _D3dmd9dtemplate15functionResolveFKSQBi11declaration16MatchAccumulatorCQCr7dsymbol7DsymbolSQDl7globals3LocPSQEc6dscope5ScopePSQEu4root5array__T5ArrayTCQFtQz10rootobject10RootObjectZQBmCQHb5mtype4TypePSQHrQCxQCv__TQCsTCQIi10expression10ExpressionZQDzPPxaZ10__lambda11MFQHqZi (__capture=0x7ffffffeb940, s=0x7fffff6c6660) at dmd/dtemplate.d:3074
#14 0x00000000083bcbc8 in _D3dmd4func13overloadApplyFCQBa7dsymbol7DsymbolMDFQxZiPSQCc6dscope5ScopeZi (sc=0x7ffffdfb0500, dg=..., fstart=0x7fffff6c6660) at dmd/func.d:2696
#15 0x0000000008364197 in _D3dmd9dtemplate15functionResolveFKSQBi11declaration16MatchAccumulatorCQCr7dsymbol7DsymbolSQDl7globals3LocPSQEc6dscope5ScopePSQEu4root5array__T5ArrayTCQFtQz10rootobject10RootObjectZQBmCQHb5mtype4TypePSQHrQCxQCv__TQCsTCQIi10expression10ExpressionZQDzPPxaZv (pMessage=0x0, fargs=0x7fffff6c7540, tthis=0x0, tiargs=0x0, sc=0x7ffffdfb0500, loc=..., dstart=0x7fffff6c6660, m=...) at dmd/dtemplate.d:3076
#16 0x00000000083bcf0b in _D3dmd4func15resolveFuncCallFKxSQBe7globals3LocPSQBv6dscope5ScopeCQCm7dsymbol7DsymbolPSQDh4root5array__T5ArrayTCQEgQz10rootobject10RootObjectZQBmCQFo5mtype4TypePSQGeQCxQCv__TQCsTCQGv10expression10ExpressionZQDzEQIbQIa15FuncResolveFlagZCQJaQIz15FuncDeclaration (flags=0 '\000', fargs=0x7fffff6c7540, tthis=0x0, tiargs=0x0, s=0x7fffff6c6660, sc=0x7ffffdfb0500, loc=...) at dmd/func.d:2856
#17 0x000000000839eb39 in ExpressionSemanticVisitor::visit(CallExp*) (this=0x7ffffffec4a8, exp=0x7fffff6c74e0) at dmd/expressionsem.d:4835
#18 0x000000000838a3c2 in CallExp::accept(Visitor*) (this=0x7fffff6c74e0, v=0x7ffffffec4a8) at dmd/expression.d:4975
#19 0x00000000083b3c84 in expressionSemantic(Expression*, Scope*) (e=0x7fffff6c74e0, sc=0x7ffffdfb0500) at dmd/expressionsem.d:11497
#20 0x0000000008462e3a in StatementSemanticVisitor::visit(ExpStatement*) (this=0x7ffffffec578, s=0x7fffff6c75c0) at dmd/statementsem.d:186
#21 0x000000000845e8a6 in ExpStatement::accept(Visitor*) (this=0x7fffff6c75c0, v=0x7ffffffec578) at dmd/statement.d:750
#22 0x0000000008462d24 in statementSemantic(Statement*, Scope*) (s=0x7fffff6c75c0, sc=0x7ffffdfb0500) at dmd/statementsem.d:131
#23 0x00000000084630fc in StatementSemanticVisitor::visit(CompoundStatement*) (this=0x7ffffffec8c8, cs=0x7fffff6c75f0) at dmd/statementsem.d:244
#24 0x000000000845f122 in CompoundStatement::accept(Visitor*) (this=0x7fffff6c75f0, v=0x7ffffffec8c8) at dmd/statement.d:938
#25 0x0000000008462d24 in statementSemantic(Statement*, Scope*) (s=0x7fffff6c75f0, sc=0x7ffffdfb0500) at dmd/statementsem.d:131
#26 0x0000000008458c0c in Semantic3Visitor::visit(FuncDeclaration*) (this=0x7ffffffed3a0, funcdecl=0x7fffff6c71f0) at dmd/semantic3.d:575
#27 0x00000000083bc776 in FuncDeclaration::accept(Visitor*) (this=0x7fffff6c71f0, v=0x7ffffffed3a0) at dmd/func.d:2558
#28 0x000000000845766e in semantic3(Dsymbol*, Scope*) (dsym=0x7fffff6c71f0, sc=0x7ffffdfb01f0) at dmd/semantic3.d:81
#29 0x0000000008457a68 in Semantic3Visitor::visit(Module*) (this=0x7ffffffed450, mod=0x7fffff6c4d20) at dmd/semantic3.d:194
#30 0x000000000832b93e in Module::accept(Visitor*) (this=0x7fffff6c4d20, v=0x7ffffffed450) at dmd/dmodule.d:1462
#31 0x000000000845766e in semantic3(Dsymbol*, Scope*) (dsym=0x7fffff6c4d20, sc=0x0) at dmd/semantic3.d:81
#32 0x000000000841138c in _D3dmd4mars7tryMainFmPPxaKSQz7globals5ParamZi (params=..., argv=0x7ffffffee028, argc=5) at dmd/mars.d:597
#33 0x0000000008412a88 in D main (_param_0=...) at dmd/mars.d:952
Comment #2 by aminyahyaabadi74 — 2021-06-01T05:58:27Z
I still face this issue when I build `-release`. It doesn't happen with `debug`.
Comment #3 by dlang-bot — 2023-06-21T09:58:03Z
@RazvanN7 updated dlang/dmd pull request #15338 "Issue 21025 - Segfault for function contract -preview=dip1021" fixing this issue:
- Fix Issue 21025 - Segfault for function contract -preview=dip1021
https://github.com/dlang/dmd/pull/15338
Comment #4 by dlang-bot — 2023-06-21T14:01:35Z
dlang/dmd pull request #15338 "Issue 21025 - Segfault for function contract -preview=dip1021" was merged into stable:
- 855325bcfa3eef1b1858d1784340ca9bbeda6f14 by RazvanN7:
Fix Issue 21025 - Segfault for function contract -preview=dip1021
https://github.com/dlang/dmd/pull/15338
Comment #5 by dlang-bot — 2023-07-02T13:41:38Z
dlang/dmd pull request #15373 "merge stable" was merged into master:
- 5151974a130df567f277be5ae871afa614e38160 by Razvan Nitu:
Fix Issue 21025 - Segfault for function contract -preview=dip1021 (#15338)
https://github.com/dlang/dmd/pull/15373