I have to support swift 2.2 for the time being because I have to support the 
current release of xcode. I will upgrade to swift 3 when it is released.

BTW it doesnt look like my attachment made it, so here is a link to the file:

https://github.com/PerfectlySoft/Perfect/blob/master/PerfectLib/MimeType.swift

On 03/22/2016 12:15 PM, Joe Groff wrote:

I'd recommend testing to see if this is improved in Swift 3, if it's practical 
to switch your codebase over. There are some type checker improvements there 
that didn't make it into Swift 2.

-Joe



On Mar 22, 2016, at 12:13 PM, Rafkind, Jon via swift-dev 
<swift-dev@swift.org><mailto:swift-dev@swift.org> wrote:

Attached is a file from a project called PerfectLib that contains a dictionary 
literal with 816 entries in it. On my system with exactly 559 entries (meaning 
the last entry is "res") the file can be compiled, but with 560 or more it 
crashes. It looks like the crash is an infinite loop, I see many entries like 
this in the stack trace.

frame #3351: 0x000000000199e0fe 
swift`tryTypeVariableBindings(cs=0x00007fffffff82e8, depth=12, 
typeVar=0x0000000007edba58, bindings=ArrayRef<(anonymous 
namespace)::PotentialBinding> @ 0x00007ffffffe00f8, 
solutions=0x00007fffffff7660, 
allowFreeTypeVariables=Disallow)::PotentialBinding>, 
llvm::SmallVectorImpl<swift::constraints::Solution>&, 
swift::FreeTypeVariableBinding) + 1294 at CSSolver.cpp:1078
   frame #3352: 0x000000000199cdef 
swift`swift::constraints::ConstraintSystem::solveSimplified(this=0x00007fffffff82e8,
 solutions=0x00007fffffff7660, allowFreeTypeVariables=Disallow) + 879 at 
CSSolver.cpp:1551
   frame #3353: 0x000000000199b7c0 
swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fffffff82e8, 
solutions=0x00007fffffff7660, allowFreeTypeVariables=Disallow) + 608 at 
CSSolver.cpp:1256
   frame #3354: 0x000000000199e0fe 
swift`tryTypeVariableBindings(cs=0x00007fffffff82e8, depth=11, 
typeVar=0x0000000007eca470, bindings=ArrayRef<(anonymous 
namespace)::PotentialBinding> @ 0x00007ffffffe1de8, 
solutions=0x00007fffffff7660, 
allowFreeTypeVariables=Disallow)::PotentialBinding>, 
llvm::SmallVectorImpl<swift::constraints::Solution>&, 
swift::FreeTypeVariableBinding) + 1294 at CSSolver.cpp:1078
   frame #3355: 0x000000000199cdef 
swift`swift::constraints::ConstraintSystem::solveSimplified(this=0x00007fffffff82e8,
 solutions=0x00007fffffff7660, allowFreeTypeVariables=Disallow) + 879 at 
CSSolver.cpp:1551
   frame #3356: 0x000000000199b7c0 
swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fffffff82e8, 
solutions=0x00007fffffff7660, allowFreeTypeVariables=Disallow) + 608 at 
CSSolver.cpp:1256

The bottom of the stack is

frame #3391: 0x00000000017d21d9 
swift`swift::TypeChecker::solveForExpression(this=0x00007fffffff97e0, 
expr=0x00007fffffff8fe0, dc=0x0000000007ead5c0, convertType=Type @ 
0x00007fffffff7518, allowFreeTypeVariables=Disallow, 
listener=0x00007fffffff8f50, cs=0x00007fffffff82e8, viable=0x00007fffffff7660, 
options=(Storage = 16)) + 665 at TypeCheckConstraints.cpp:1154
   frame #3392: 0x00000000017d4ae7 
swift`swift::TypeChecker::typeCheckExpression(this=0x00007fffffff97e0, 
expr=0x00007fffffff8fe0, dc=0x0000000007ead5c0, convertType=Type @ 
0x00007fffffff8e48, convertTypePurpose=CTP_Unused, options=(Storage = 16), 
listener=0x00007fffffff8f50) + 711 at TypeCheckConstraints.cpp:1304
   frame #3393: 0x00000000017d61f5 
swift`swift::TypeChecker::typeCheckBinding(this=0x00007fffffff97e0, 
pattern=0x00007fffffff8fe8, initializer=0x00007fffffff8fe0, 
DC=0x0000000007ead5c0) + 261 at TypeCheckConstraints.cpp:1624
   frame #3394: 0x00000000017d64cd 
swift`swift::TypeChecker::typeCheckPatternBinding(this=0x00007fffffff97e0, 
PBD=0x0000000007ed3fe8, patternNumber=0) + 237 at TypeCheckConstraints.cpp:1674
   frame #3395: 0x0000000001809eb1 
swift`validatePatternBindingDecl(tc=0x00007fffffff97e0, 
binding=0x0000000007ed3fe8, entryNumber=0) + 1025 at TypeCheckDecl.cpp:1214
   frame #3396: 0x00000000018126b3 swift`(anonymous 
namespace)::DeclChecker::visitPatternBindingDecl(this=0x00007fffffff93b0, 
PBD=0x0000000007ed3fe8) + 83 at TypeCheckDecl.cpp:2842
   frame #3397: 0x00000000018117ac swift`swift::ASTVisitor<(anonymous 
namespace)::DeclChecker, void, void, void, void, void, 
void>::visit(this=0x00007fffffff93b0, D=0x0000000007ed3fe8) + 140 at 
DeclNodes.def:91
   frame #3398: 0x00000000018076f7 swift`(anonymous 
namespace)::DeclChecker::visit(this=0x00007fffffff93b0, 
decl=0x0000000007ed3fe8) + 39 at TypeCheckDecl.cpp:2672
   frame #3399: 0x0000000001807650 
swift`swift::TypeChecker::typeCheckDecl(this=0x00007fffffff97e0, 
D=0x0000000007ed3fe8, isFirstPass=false) + 160 at TypeCheckDecl.cpp:5561
   frame #3400: 0x00000000018ca5ce swift`(anonymous 
namespace)::StmtChecker::visitBraceStmt(this=0x00007fffffff9600, 
BS=0x0000000007ed4038) + 1166 at TypeCheckStmt.cpp:1078
   frame #3401: 0x00000000018c9f0b swift`swift::ASTVisitor<(anonymous 
namespace)::StmtChecker, void, swift::Stmt*, void, void, void, 
void>::visit(this=0x00007fffffff9600, S=0x0000000007ed4038) + 91 at 
StmtNodes.def:43
   frame #3402: 0x00000000018c99fa swift`bool (anonymous 
namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(this=0x00007fffffff9600,
 S=0x00007fffffff9668) + 42 at TypeCheckStmt.cpp:325
   frame #3403: 0x00000000018c98e4 
swift`swift::TypeChecker::typeCheckTopLevelCodeDecl(this=0x00007fffffff97e0, 
TLCD=0x0000000007ead590) + 132 at TypeCheckStmt.cpp:1405
   frame #3404: 0x00000000017b1524 
swift`swift::performTypeChecking(SF=0x0000000007ead380, TLC=0x00007fffffffa068, 
Options=(Storage = 5), StartElem=0) + 900 at TypeChecker.cpp:585
   frame #3405: 0x0000000001515e08 
swift`swift::CompilerInstance::performSema(this=0x00007fffffffb680) + 5048 at 
Frontend.cpp:464
   frame #3406: 0x0000000000c5e42c 
swift`performCompile(Instance=0x00007fffffffb680, 
Invocation=0x00007fffffffb250, Args=ArrayRef<const char *> @ 
0x00007fffffffad50, ReturnValue=0x00007fffffffaf34) + 1500 at 
frontend_main.cpp:666
   frame #3407: 0x0000000000c5da75 swift`frontend_main(Args=ArrayRef<const char 
*> @ 0x00007fffffffc188, Argv0="/home/jon/tmp/swift/swift/install/bin/swift", 
MainAddr=0x0000000000c4c010) + 2981 at frontend_main.cpp:1117
   frame #3408: 0x0000000000c4cc3e swift`main(argc_=10, 
argv_=0x00007fffffffdba8) + 3054 at driver.cpp:156
   frame #3409: 0x00007ffff6375ec5 libc.so.6`__libc_start_main(main=(swift`main 
at driver.cpp:107), argc=10, argv=0x00007fffffffdba8, init=<unavailable>, 
fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffdb98) + 
245 at libc-start.c:287
   frame #3410: 0x0000000000c4bf44 swift`_start + 41

This crash is on linux using swift 2.2 @ c9e72b3a9290a78d. I haven't tried the 
swift-2.2-RELEASE tag, but it will probably have the same behavior as my 
current git checkout is pretty close (in terms of commits) to the release tag. 
Curiously on osx the native swift binary does not have a problem with this file.

My own code built on top of the swift codebase on osx does crash, however. I am 
currently investigating what differences there are between how I invoke the 
swift type checker and how the native swiftc does it.

--
_______________________________________________
swift-dev mailing list
swift-dev@swift.org<mailto:swift-dev@swift.org>
https://lists.swift.org/mailman/listinfo/swift-dev






--
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to