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-10073] Compiler crash on generic clause constraining generic placeholder of parent signature #52475

Closed
hamishknight opened this issue Mar 10, 2019 · 1 comment
Assignees
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 IRGen LLVM IR generation

Comments

@hamishknight
Copy link
Collaborator

Previous ID SR-10073
Radar rdar://problem/48925725
Original Reporter @hamishknight
Type Bug
Status Resolved
Resolution Done
Environment

Swift version 5.0-dev (LLVM 94d957ca75, Swift 8dffd637a9)
Target: x86_64-apple-darwin18.2.0

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

md5: 41b392f440c1061d4652103f9f1c51df

Issue Description:

The following trips an assertion in IRGen:

protocol P {}

class C1<U> {
  func foo<V>(_ z: V) where U : P {
    bar(z)
  }
  func bar<V>(_ z: V) where U : P {}
}

Stack trace:

Assertion failed: (!isInvalid()), function getRequirement, file /Users/hamishknight/Desktop/swift-dev/swift/lib/AST/ProtocolConformance.cpp, line 77.
Stack dump:
0.  Program arguments: ./swift -frontend -c /Users/hamishknight/Desktop/Stochastic Projects/newnew/newnew/main.swift
1.  While emitting IR SIL function "@$s4main2C1C3fooyyqd__AA1PRzlF".
 for 'foo(_:)' (at /Users/hamishknight/Desktop/Stochastic Projects/newnew/newnew/main.swift:187:3)
0  swift                    0x000000010b34a1d5 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1  swift                    0x000000010b349475 llvm::sys::RunSignalHandlers() + 85
2  swift                    0x000000010b34a7c8 SignalHandler(int) + 264
3  libsystem_platform.dylib 0x00007fff676c8b3d _sigtramp + 29
4  libsystem_platform.dylib 0x00000001177f1938 _sigtramp + 2954006040
5  libsystem_c.dylib        0x00007fff675861c9 abort + 127
6  libsystem_c.dylib        0x00007fff6754e868 basename_r + 0
7  swift                    0x0000000108336af9 swift::ProtocolConformanceRef::getRequirement() const + 73
8  swift                    0x000000010611807d swift::irgen::emitGenericRequirementFromSubstitutions(swift::irgen::IRGenFunction&, swift::CanGenericSignature, swift::ModuleDecl&, swift::irgen::GenericRequirement, swift::SubstitutionMap) + 333
9  swift                    0x000000010612adf2 (anonymous namespace)::EmitPolymorphicArguments::emit(swift::SubstitutionMap, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&)::$_22::operator()(swift::irgen::GenericRequirement) const + 98
10 swift                    0x000000010612ad88 void llvm::function_ref<void (swift::irgen::GenericRequirement)>::callback_fn<(anonymous namespace)::EmitPolymorphicArguments::emit(swift::SubstitutionMap, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&)::$_22>(long, swift::irgen::GenericRequirement) + 72
11 swift                    0x000000010610e9c4 llvm::function_ref<void (swift::irgen::GenericRequirement)>::operator()(swift::irgen::GenericRequirement) const + 84
12 swift                    0x000000010612b4fd (anonymous namespace)::PolymorphicConvention::enumerateUnfulfilledRequirements(llvm::function_ref<void (swift::irgen::GenericRequirement)> const&)::$_12::operator()(swift::irgen::GenericRequirement) const + 125
13 swift                    0x000000010612b478 void llvm::function_ref<void (swift::irgen::GenericRequirement)>::callback_fn<(anonymous namespace)::PolymorphicConvention::enumerateUnfulfilledRequirements(llvm::function_ref<void (swift::irgen::GenericRequirement)> const&)::$_12>(long, swift::irgen::GenericRequirement) + 72
14 swift                    0x000000010610e9c4 llvm::function_ref<void (swift::irgen::GenericRequirement)>::operator()(swift::irgen::GenericRequirement) const + 84
15 swift                    0x000000010610e907 swift::irgen::enumerateGenericSignatureRequirements(swift::CanGenericSignature, llvm::function_ref<void (swift::irgen::GenericRequirement)> const&) + 407
16 swift                    0x000000010611bfe9 (anonymous namespace)::PolymorphicConvention::enumerateRequirements(llvm::function_ref<void (swift::irgen::GenericRequirement)> const&) + 41
17 swift                    0x00000001061173c5 (anonymous namespace)::PolymorphicConvention::enumerateUnfulfilledRequirements(llvm::function_ref<void (swift::irgen::GenericRequirement)> const&) + 69
18 swift                    0x0000000106116ef8 (anonymous namespace)::EmitPolymorphicArguments::emit(swift::SubstitutionMap, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&) + 136
19 swift                    0x0000000106116e27 swift::irgen::emitPolymorphicArguments(swift::irgen::IRGenFunction&, swift::CanTypeWrapper<swift::SILFunctionType>, swift::SubstitutionMap, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&) + 103
20 swift                    0x0000000106258cb9 (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 1577
21 swift                    0x0000000106244215 (anonymous namespace)::IRGenSILFunction::visitApplyInst(swift::ApplyInst*) + 53
22 swift                    0x0000000106239b84 swift::SILInstructionVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::SILInstruction*) + 3108
23 swift                    0x000000010622d59a (anonymous namespace)::IRGenSILFunction::visitSILBasicBlock(swift::SILBasicBlock*) + 1482
24 swift                    0x0000000106225a0a (anonymous namespace)::IRGenSILFunction::emitSILFunction() + 1738
25 swift                    0x0000000106225293 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 339
26 swift                    0x00000001060164a9 swift::irgen::IRGenerator::emitLazyDefinitions() + 1225
27 swift                    0x00000001061a5f1a performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::LLVMContext&, swift::SourceFile*, llvm::GlobalVariable**) + 1354
28 swift                    0x00000001061a49bf swift::performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::LLVMContext&, llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, llvm::GlobalVariable**) + 543
29 swift                    0x0000000105e69b8c generateIR(swift::IRGenOptions&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, swift::PrimarySpecificPaths const&, llvm::StringRef, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, std::__1::unique_ptr<llvm::Module, std::__1::default_delete<llvm::Module> >&, llvm::GlobalVariable*&, llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >) + 492
30 swift                    0x0000000105e4594f performCompileStepsPostSILGen(swift::CompilerInstance&, swift::CompilerInvocation&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, bool, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, bool, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 2559
31 swift                    0x0000000105e3b3d5 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 1861
32 swift                    0x0000000105e39ea5 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2421
33 swift                    0x0000000105d28482 run_driver(llvm::StringRef, llvm::ArrayRef<char const*>) + 914
34 swift                    0x0000000105d26d7f main + 2719
35 libdyld.dylib            0x00007fff674dded9 start + 1
fish: './swift -frontend -c /Users/ham…' terminated by signal SIGABRT (Abort)
@slavapestov
Copy link
Member

#28147

@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 IRGen LLVM IR generation
Projects
None yet
Development

No branches or pull requests

3 participants