Skip to content

[SIL] Add test case for crash triggered in swift::ModuleDecl::lookupConformance(…) #748

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

Merged
merged 1 commit into from
Dec 23, 2015
Merged

[SIL] Add test case for crash triggered in swift::ModuleDecl::lookupConformance(…) #748

merged 1 commit into from
Dec 23, 2015

Conversation

practicalswift
Copy link
Contributor

Stack trace:

<stdin>:3:12: error: expected '{' in enum
enum l<V>:V
           ^
<stdin>:3:6: error: missing protocol 'RawRepresentable'
enum l<V>:V
     ^
<stdin>:3:6: error: missing protocol 'IntegerLiteralConvertible'
enum l<V>:V
     ^
4  sil-opt         0x0000000000d5139a swift::ModuleDecl::lookupConformance(swift::Type, swift::ProtocolDecl*, swift::LazyResolver*) + 106
5  sil-opt         0x0000000000ac5da0 swift::TypeChecker::conformsToProtocol(swift::Type, swift::ProtocolDecl*, swift::DeclContext*, swift::OptionSet<swift::ConformanceCheckFlags, unsigned int>, swift::ProtocolConformance**, swift::SourceLoc) + 96
9  sil-opt         0x0000000000a9c0d7 swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) + 151
10 sil-opt         0x0000000000a678aa swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1610
11 sil-opt         0x0000000000738d52 swift::CompilerInstance::performSema() + 2946
12 sil-opt         0x000000000072398c main + 1916
Stack dump:
0.  Program arguments: sil-opt -enable-sil-verify-all
1.  While type-checking 'l' at <stdin>:3:1

…onformance(swift::Type, swift::ProtocolDecl*, swift::LazyResolver*)

Stack trace:

```
<stdin>:3:12: error: expected '{' in enum
enum l<V>:V
           ^
<stdin>:3:6: error: missing protocol 'RawRepresentable'
enum l<V>:V
     ^
<stdin>:3:6: error: missing protocol 'IntegerLiteralConvertible'
enum l<V>:V
     ^
4  sil-opt         0x0000000000d5139a swift::ModuleDecl::lookupConformance(swift::Type, swift::ProtocolDecl*, swift::LazyResolver*) + 106
5  sil-opt         0x0000000000ac5da0 swift::TypeChecker::conformsToProtocol(swift::Type, swift::ProtocolDecl*, swift::DeclContext*, swift::OptionSet<swift::ConformanceCheckFlags, unsigned int>, swift::ProtocolConformance**, swift::SourceLoc) + 96
9  sil-opt         0x0000000000a9c0d7 swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) + 151
10 sil-opt         0x0000000000a678aa swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1610
11 sil-opt         0x0000000000738d52 swift::CompilerInstance::performSema() + 2946
12 sil-opt         0x000000000072398c main + 1916
Stack dump:
0.	Program arguments: sil-opt -enable-sil-verify-all
1.	While type-checking 'l' at <stdin>:3:1
```
@lattner
Copy link
Contributor

lattner commented Dec 23, 2015

Does this really rely on a lil input, or does it repro with "swift -frontend -parse t.swift" ?

@practicalswift
Copy link
Contributor Author

@lattner Judging from my testing it requires SIL input, see:

Trying with swift -frontend -parse -:

$ swift -frontend -parse - <<< 'enum l<V>:V'
<stdin>:1:12: error: expected '{' in enum
enum l<V>:V
           ^
<stdin>:1:11: error: raw type 'V' is not convertible from any literal
enum l<V>:V
          ^
<stdin>:1:6: error: type 'l<V>' does not conform to protocol 'RawRepresentable'
enum l<V>:V
     ^
Swift.RawRepresentable:9:15: note: protocol requires nested type 'RawValue'
    typealias RawValue

Trying with sil-opt -:

$ sil-opt - <<< 'enum l<V>:V'
<stdin>:1:12: error: expected '{' in enum
enum l<V>:V
           ^
<stdin>:1:6: error: missing protocol 'RawRepresentable'
enum l<V>:V
     ^
<stdin>:1:6: error: missing protocol 'IntegerLiteralConvertible'
enum l<V>:V
     ^
0  sil-opt         0x0000000002c5cbf8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1  sil-opt         0x0000000002c5b3c6 llvm::sys::RunSignalHandlers() + 54
2  sil-opt         0x0000000002c5d74a
3  libpthread.so.0 0x00007f70a4817340
4  sil-opt         0x0000000000d5152a swift::ModuleDecl::lookupConformance(swift::Type, swift::ProtocolDecl*, swift::LazyResolver*) + 106
5  sil-opt         0x0000000000ac6000 swift::TypeChecker::conformsToProtocol(swift::Type, swift::ProtocolDecl*, swift::DeclContext*, swift::OptionSet<swift::ConformanceCheckFlags, unsigned int>, swift::ProtocolConformance**, swift::SourceLoc) + 96
6  sil-opt         0x0000000000a9e97c
7  sil-opt         0x0000000000aa943d
8  sil-opt         0x0000000000a9c608
9  sil-opt         0x0000000000a9c337 swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) + 151
10 sil-opt         0x0000000000a67b0a swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1610
11 sil-opt         0x0000000000739052 swift::CompilerInstance::performSema() + 2946
12 sil-opt         0x000000000072393c main + 1916
13 libc.so.6       0x00007f70a3a2aec5 __libc_start_main + 245
14 sil-opt         0x000000000072292d
Stack dump:
0.  Program arguments: sil-opt -
1.  While type-checking 'l' at <stdin>:1:1
Segmentation fault

gribozavr added a commit that referenced this pull request Dec 23, 2015
…lookupconformance

[SIL] Add test case for crash triggered in swift::ModuleDecl::lookupConformance(…)
@gribozavr gribozavr merged commit 88002e3 into swiftlang:master Dec 23, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants