Skip to content

[SR-9496] Compiler crash while type-checking #51951

@nsalmoria

Description

@nsalmoria
Previous ID SR-9496
Radar rdar://problem/46699008
Original Reporter @nsalmoria
Type Bug
Status Resolved
Resolution Done
Environment

Xcode 10.1, Development Snapshot 2018-12-10

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

md5: 3f749908a631407f67818a2c6206b50c

Issue Description:

This code compiles fine with Xcode 10.1 and default toolchain, but crashes with Development Snapshot 2018-12-10.

protocol P1 {
    associatedtype A1
}

protocol P2 {
    associatedtype A2
}

struct S1<G1: P1, G2: P1>: P1 where G1.A1 == G2.A1 {
    typealias A1 = G1.A1
}

struct S2<G1: P1, G2: P2>: P2 where G1.A1 == G2.A2 {
    typealias A2 = G2.A2
}

struct S3<G1: P1, G2: P2> where G1.A1 == G2.A2 {
    func f<G: P1>(_: G) -> S3<S1<G, G1>, S2<G, G2>> {
        fatalError()
    }
}

the crash log is

Assertion failed: (Loc.isValid()), function findBufferContainingLoc, file /Users/buildnode/jenkins/workspace/oss-swift-package-osx/swift/lib/Basic/SourceLoc.cpp, line 214.
Stack dump:
0.  Program arguments: /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2018-12-10-a.xctoolchain/usr/bin/swift -frontend -c /Users/nicolasalmoria/Documents/BugReportCompilerCrash3/Crasher/main.swift -emit-module-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/LocIsValid.swiftmodule -emit-module-doc-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/LocIsValid.swiftdoc -serialize-diagnostics-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/LocIsValid-master.dia -emit-objc-header-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/LocIsValid-Swift.h -emit-dependencies-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/LocIsValid-master.d -target x86_64-apple-macosx10.13 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Products/Release -F /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Products/Release -g -module-cache-path /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 4.2 -O -serialize-debugging-options -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/LocIsValid-generated-files.hmap -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/LocIsValid-own-target-headers.hmap -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/LocIsValid-all-target-headers.hmap -Xcc -iquote -Xcc /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/LocIsValid-project-headers.hmap -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Products/Release/include -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/DerivedSources/x86_64 -Xcc -I/Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/DerivedSources -Xcc -working-directory/Users/nicolasalmoria/Documents/BugReportCompilerCrash3 -module-name LocIsValid -num-threads 4 -o /Users/nicolasalmoria/Library/Developer/Xcode/DerivedData/VeniceConnection-flcvnporlcamcybjkxknkomaprhk/Build/Intermediates.noindex/LocIsValid.build/Release/LocIsValid.build/Objects-normal/x86_64/main.o 
1.  While type-checking 'S3' (at /Users/nicolasalmoria/Documents/BugReportCompilerCrash3/Crasher/main.swift:17:1)
2.  While type-checking 'f(_:)' (at /Users/nicolasalmoria/Documents/BugReportCompilerCrash3/Crasher/main.swift:18:5)
3.  While validating 'f(_:)' (at /Users/nicolasalmoria/Documents/BugReportCompilerCrash3/Crasher/main.swift:18:5)
0  swift                    0x000000010fccbc78 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1  swift                    0x000000010fccaef5 llvm::sys::RunSignalHandlers() + 85
2  swift                    0x000000010fccc282 SignalHandler(int) + 258
3  libsystem_platform.dylib 0x00007fff62393b3d _sigtramp + 29
4  libsystem_platform.dylib 0x0000000111fb9000 _sigtramp + 2948748512
5  libsystem_c.dylib        0x00007fff622521c9 abort + 127
6  libsystem_c.dylib        0x00007fff6221a868 basename_r + 0
7  swift                    0x000000010d4c5cd8 swift::SourceManager::findBufferContainingLoc(swift::SourceLoc) const + 200
8  swift                    0x000000010d43cee0 swift::GenericSignatureBuilder::checkSameTypeConstraints(swift::ArrayRefView<swift::Type, swift::GenericTypeParamType*, swift::GenericTypeParamType* swift::staticCastHelper<swift::GenericTypeParamType>(swift::Type const&), true>, swift::GenericSignatureBuilder::EquivalenceClass*)::$_49::__invoke((anonymous namespace)::IntercomponentEdge* const*, (anonymous namespace)::IntercomponentEdge* const*) + 96
9  libsystem_c.dylib        0x00007fff62255a0f _isort + 193
10 libsystem_c.dylib        0x00007fff6225593c _qsort + 2159
11 swift                    0x000000010d430fc6 swift::GenericSignatureBuilder::checkSameTypeConstraints(swift::ArrayRefView<swift::Type, swift::GenericTypeParamType*, swift::GenericTypeParamType* swift::staticCastHelper<swift::GenericTypeParamType>(swift::Type const&), true>, swift::GenericSignatureBuilder::EquivalenceClass*) + 6422
12 swift                    0x000000010d42db62 swift::GenericSignatureBuilder::finalize(swift::SourceLoc, swift::ArrayRefView<swift::Type, swift::GenericTypeParamType*, swift::GenericTypeParamType* swift::staticCastHelper<swift::GenericTypeParamType>(swift::Type const&), true>, bool) + 2178
13 swift                    0x000000010d4364cd swift::GenericSignatureBuilder::computeGenericSignature(swift::SourceLoc, bool, bool) && + 45
14 swift                    0x000000010d0e8094 swift::TypeChecker::validateGenericFuncSignature(swift::AbstractFunctionDecl*) + 980
15 swift                    0x000000010d0bdb21 swift::TypeChecker::validateDecl(swift::ValueDecl*) + 6081
16 swift                    0x000000010d0c7780 (anonymous namespace)::DeclChecker::visitFuncDecl(swift::FuncDecl*) + 48
17 swift                    0x000000010d0b8f88 (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 184
18 swift                    0x000000010d0c5dab (anonymous namespace)::DeclChecker::visitStructDecl(swift::StructDecl*) + 139
19 swift                    0x000000010d0b94a3 (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 1491
20 swift                    0x000000010d0b8ec6 swift::TypeChecker::typeCheckDecl(swift::Decl*) + 38
21 swift                    0x000000010d1529c8 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 872
22 swift                    0x000000010c9252ac swift::CompilerInstance::parseAndTypeCheckMainFileUpTo(swift::SourceFile::ASTStage_t, swift::PersistentParserState&, swift::DelayedParsingCallbacks*, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>) + 492
23 swift                    0x000000010c923c23 swift::CompilerInstance::parseAndCheckTypesUpTo(swift::CompilerInstance::ImplicitImports const&, swift::SourceFile::ASTStage_t) + 435
24 swift                    0x000000010c9232e8 swift::CompilerInstance::performSemaUpTo(swift::SourceFile::ASTStage_t) + 616
25 swift                    0x000000010c1012c4 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 1300
26 swift                    0x000000010c0ffd42 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2978
27 swift                    0x000000010c0b1b1e main + 686
28 libdyld.dylib            0x00007fff621aa08d start + 1
29 libdyld.dylib            0x000000000000003a start + 2649055150
error: Abort trap: 6

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.compilerThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwareregressionswift 5.0

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions