Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-15009] Assertion failure with recursive associatedtype constraints and CaseIterable #57339

Closed
gwynne opened this issue Aug 2, 2021 · 2 comments
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software

Comments

@gwynne
Copy link
Contributor

gwynne commented Aug 2, 2021

Previous ID SR-15009
Radar rdar://problem/81425392
Original Reporter @gwynne
Type Bug
Status Resolved
Resolution Done
Environment

Swift version 5.5-dev (LLVM 87bb245cc153aaf, Swift 18a849e)
Target: x86_64-unknown-linux-gnu

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, CompilerCrash
Assignee None
Priority Medium

md5: 94ac825d416e1a6a2cc1e1c6a81108c6

Issue Description:

The following code causes an assertion failure in 5.4 and the latest 5.5 and main nightlies:

protocol P { associatedtype A: Q where A.B == Self }
protocol Q: CaseIterable { associatedtype B: P where B.A == Self }

The assertion only occurs in the presence of both the recursive associated type constraint and the conformance of one of the protocols to CaseIterable; removing one of the where clauses or the CaseIterable conformance causes the assertion to go away. Assertion trace with latest 5.5 nightly as of this submission:

swift-frontend: /home/build-user/swift/lib/AST/GenericSignatureBuilder.cpp:8486: void checkGenericSignature(swift::CanGenericSignature, swift::GenericSignatureBuilder &): Assertion `isCanonicalAnchor(secondType)' failed.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.  Program arguments: /usr/bin/swift-frontend -frontend -interpret test.swift -disable-objc-interop -color-diagnostics -new-driver-path /usr/bin/swift-driver -resource-dir /usr/lib/swift -module-name test
1.  Swift version 5.5-dev (LLVM 87bb245cc153aaf, Swift 18a849ecece6013)
2.
3.  While evaluating request TypeCheckSourceFileRequest(source_file "test.swift")
4.  While type-checking 'P' (at test.swift:1:1)
5.  While type-checking 'A' (at test.swift:1:14)
6.  While evaluating request RequirementRequest(test.(file).P@test.swift:1:10, 0, interface)
7.  While evaluating request ResolveTypeRequest(while resolving type , A.B, (null))
8.  While evaluating request RequirementSignatureRequest(test.(file).P@test.swift:1:10)
9.  While evaluating request RequirementSignatureRequest(test.(file).Q@test.swift:2:10)
10. While checking generic signature <τ_0_0 where τ_0_0 : CaseIterable, τ_0_0 == τ_0_0.B.A.B.A, τ_0_0.B : P> in requirement #&#8203;1
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/usr/bin/swift-frontend[0x5a1fcc3]
/usr/bin/swift-frontend[0x5a1dbae]
/usr/bin/swift-frontend[0x5a20045]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7fd56f1133c0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7fd56ebba18b]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7fd56eb99859]
/lib/x86_64-linux-gnu/libc.so.6(+0x25729)[0x7fd56eb99729]
/lib/x86_64-linux-gnu/libc.so.6(+0x36f36)[0x7fd56ebaaf36]
/usr/bin/swift-frontend[0x19734f3]
/usr/bin/swift-frontend[0x143d56b]
/usr/bin/swift-frontend[0x18c4e09]
/usr/bin/swift-frontend[0x18c4c05]
/usr/bin/swift-frontend[0x1856a20]
/usr/bin/swift-frontend[0x18569d4]
/usr/bin/swift-frontend[0x195d22d]
/usr/bin/swift-frontend[0x195ee1b]
/usr/bin/swift-frontend[0x196016a]
/usr/bin/swift-frontend[0x1986757]
/usr/bin/swift-frontend[0x197a809]
/usr/bin/swift-frontend[0x195cf9d]
/usr/bin/swift-frontend[0x195d6f4]
/usr/bin/swift-frontend[0x195ee1b]
/usr/bin/swift-frontend[0x196016a]
/usr/bin/swift-frontend[0x1962ab5]
/usr/bin/swift-frontend[0x143d556]
/usr/bin/swift-frontend[0x18c4e09]
/usr/bin/swift-frontend[0x18c4c05]
/usr/bin/swift-frontend[0x1856a20]
/usr/bin/swift-frontend[0x18569d4]
/usr/bin/swift-frontend[0x195d22d]
/usr/bin/swift-frontend[0x195ee1b]
/usr/bin/swift-frontend[0x196016a]
/usr/bin/swift-frontend[0x1962ab5]
/usr/bin/swift-frontend[0x1971e9e]
/usr/bin/swift-frontend[0x175315d]
/usr/bin/swift-frontend[0x151bdfe]
/usr/bin/swift-frontend[0x15224f3]
/usr/bin/swift-frontend[0x151eac3]
/usr/bin/swift-frontend[0x152ec56]
/usr/bin/swift-frontend[0x151e8db]
/usr/bin/swift-frontend[0x151e89b]
/usr/bin/swift-frontend[0x14942a0]
/usr/bin/swift-frontend[0x1a40e1a]
/usr/bin/swift-frontend[0x1a40b41]
/usr/bin/swift-frontend[0x1a3cb87]
/usr/bin/swift-frontend[0x146a9ff]
/usr/bin/swift-frontend[0x1467f9b]
/usr/bin/swift-frontend[0x146aa7b]
/usr/bin/swift-frontend[0x1467f9b]
/usr/bin/swift-frontend[0x1467e81]
/usr/bin/swift-frontend[0x1530528]
/usr/bin/swift-frontend[0x1531725]
/usr/bin/swift-frontend[0x1531565]
/usr/bin/swift-frontend[0x15302d8]
/usr/bin/swift-frontend[0x15302b4]
/usr/bin/swift-frontend[0x6f759e]
/usr/bin/swift-frontend[0x6f7426]
/usr/bin/swift-frontend[0x55ec9c]
/usr/bin/swift-frontend[0x4b140e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fd56eb9b0b3]
/usr/bin/swift-frontend[0x4b104e]
Aborted
@typesanitizer
Copy link

@swift-ci create

@slavapestov
Copy link
Member

#42113

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@AnthonyLatsis AnthonyLatsis added the crash Bug: A crash, i.e., an abnormal termination of software label Dec 12, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software
Projects
None yet
Development

No branches or pull requests

4 participants