swiftlang / swift

The Swift Programming Language
https://swift.org
Apache License 2.0
67.31k stars 10.34k forks source link

[SR-15501] Compiler crash when awaiting actor returning method in test case #57806

Open swift-ci opened 2 years ago

swift-ci commented 2 years ago
Previous ID SR-15501
Radar None
Original Reporter berikv (JIRA User)
Type Bug

Attachment: Download

Environment Xcode Version 13.1 (13A1030d)
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: 5d0c907342f611e49d5782487ccd85fc

Issue Description:

See code attachment.

To crash the compiler two files are needed, in Source directory:

public final actor MyActor {
    public let valuePointer = ""
    public func copy() -> MyActor { fatalError() }
} 

In the Test directory:

import XCTest
@testable import SwiftSegfault11

final class SwiftSegfault11ests: XCTestCase {
    func test() async throws {
        let value = MyActor()
        _ = await value.copy().valuePointer
        _ = await value.valuePointer
    }
} 

Compiler output

Showing All Messages

Prepare build
note: Using new build system
note: Planning
note: Build preparation complete
note: Building targets in parallel

// SNIP

error: compile command failed due to signal 11 (use -v to see invocation)

CompileSwift normal arm64 /Users/berik/Projects/SwiftSegfault11/Tests/SwiftSegfault11Tests/SQLiteValueTests.swift (in target 'SwiftSegfault11Tests' from project 'SwiftSegfault11')
    cd /Users/berik/Projects/SwiftSegfault11
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file /Users/berik/Projects/SwiftSegfault11/Tests/SwiftSegfault11Tests/SQLiteValueTests.swift -emit-module-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests\~partial.swiftmodule -emit-module-doc-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests\~partial.swiftdoc -emit-module-source-info-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests\~partial.swiftsourceinfo -emit-dependencies-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.d -emit-reference-dependencies-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.swiftdeps -serialize-diagnostics-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.dia -target arm64-apple-macos12.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk -I /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug/PackageFrameworks -F /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -enable-testing -g -module-cache-path /Users/berik/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D SWIFT_PACKAGE -D DEBUG -D Xcode -new-driver-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -serialize-debugging-options -serialize-debugging-options -Xcc -working-directory -Xcc /Users/berik/Projects/SwiftSegfault11 -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug/include -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources-normal/arm64 -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources/arm64 -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -module-name SwiftSegfault11Tests -target-sdk-version 12.0.0 -parse-as-library -o /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.o -index-store-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Index/DataStore -index-system-modules

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.  Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file /Users/berik/Projects/SwiftSegfault11/Tests/SwiftSegfault11Tests/SQLiteValueTests.swift -emit-module-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests~partial.swiftmodule -emit-module-doc-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests~partial.swiftdoc -emit-module-source-info-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests~partial.swiftsourceinfo -emit-dependencies-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.d -emit-reference-dependencies-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.swiftdeps -serialize-diagnostics-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.dia -target arm64-apple-macos12.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk -I /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug/PackageFrameworks -F /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -enable-testing -g -module-cache-path /Users/berik/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity=checked -Onone -D SWIFT_PACKAGE -D DEBUG -D Xcode -new-driver-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -serialize-debugging-options -serialize-debugging-options -Xcc -working-directory -Xcc /Users/berik/Projects/SwiftSegfault11 -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Products/Debug/include -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources-normal/arm64 -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources/arm64 -Xcc -I/Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG=1 -module-name SwiftSegfault11Tests -target-sdk-version 12.0.0 -parse-as-library -o /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Build/Intermediates.noindex/SwiftSegfault11.build/Debug/SwiftSegfault11Tests.build/Objects-normal/arm64/SQLiteValueTests.o -index-store-path /Users/berik/Library/Developer/Xcode/DerivedData/SwiftSegfault11-hbcfhbntyliddwaxxnwunmapgfaa/Index/DataStore -index-system-modules
1.  Apple Swift version 5.5.1 (swiftlang-1300.0.31.4 clang-1300.0.29.6)
2.  
3.  While evaluating request ASTLoweringRequest(Lowering AST to SIL for file "/Users/berik/Projects/SwiftSegfault11/Tests/SwiftSegfault11Tests/SQLiteValueTests.swift")
4.  While silgen emitFunction SIL function "@$s20SwiftSegfault11Tests0A14Segfault11estsC4testyyYaF".
 for 'test()' (at /Users/berik/Projects/SwiftSegfault11/Tests/SwiftSegfault11Tests/SQLiteValueTests.swift:6:5)
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):
0  swift-frontend           0x0000000106e1c534 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  swift-frontend           0x0000000106e1b63c llvm::sys::RunSignalHandlers() + 128
2  swift-frontend           0x0000000106e1cb74 SignalHandler(int) + 292
3  libsystem_platform.dylib 0x00000001bca304e4 _sigtramp + 56
4  swift-frontend           0x00000001031ee7e4 swift::Lowering::SILGenFunction::emitLoadOfLValue(swift::SILLocation, swift::Lowering::LValue&&, swift::Lowering::SGFContext, bool) + 544
5  swift-frontend           0x00000001031ee7e4 swift::Lowering::SILGenFunction::emitLoadOfLValue(swift::SILLocation, swift::Lowering::LValue&&, swift::Lowering::SGFContext, bool) + 544
6  swift-frontend           0x00000001031cd3a0 swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) + 14936
7  swift-frontend           0x00000001031bfdac swift::Lowering::SILGenFunction::emitIgnoredExpr(swift::Expr*) + 672
8  swift-frontend           0x00000001031ceb60 swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) + 21016
9  swift-frontend           0x00000001031bfdac swift::Lowering::SILGenFunction::emitIgnoredExpr(swift::Expr*) + 672
10 swift-frontend           0x000000010321ff40 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 196
11 swift-frontend           0x00000001031e07e0 swift::Lowering::SILGenFunction::emitFunction(swift::FuncDecl*) + 628
12 swift-frontend           0x0000000103160e34 swift::Lowering::SILGenModule::emitFunctionDefinition(swift::SILDeclRef, swift::SILFunction*) + 8132
13 swift-frontend           0x0000000103163144 emitOrDelayFunction(swift::Lowering::SILGenModule&, swift::SILDeclRef, bool) + 372
14 swift-frontend           0x000000010315ee5c swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) + 204
15 swift-frontend           0x0000000103231150 swift::ASTVisitor<(anonymous namespace)::SILGenType, void, void, void, void, void, void>::visit(swift::Decl*) + 160
16 swift-frontend           0x000000010322d45c (anonymous namespace)::SILGenType::emitType() + 252
17 swift-frontend           0x00000001031674d8 swift::ASTVisitor<swift::Lowering::SILGenModule, void, void, void, void, void, void>::visit(swift::Decl*) + 120
18 swift-frontend           0x0000000103165840 swift::ASTLoweringRequest::evaluate(swift::Evaluator&, swift::ASTLoweringDescriptor) const + 3192
19 swift-frontend           0x000000010321faec swift::SimpleRequest<swift::ASTLoweringRequest, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> > (swift::ASTLoweringDescriptor), (swift::RequestFlags)9>::evaluateRequest(swift::ASTLoweringRequest const&, swift::Evaluator&) + 216
20 swift-frontend           0x0000000103169998 llvm::Expected<swift::ASTLoweringRequest::OutputType> swift::Evaluator::getResultUncached<swift::ASTLoweringRequest>(swift::ASTLoweringRequest const&) + 612
21 swift-frontend           0x0000000102ba58dc swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 6364
22 swift-frontend           0x0000000102b002d4 main + 932
23 dyld                     0x00000001091350f4 start + 520
error: Segmentation fault: 11 (in target 'SwiftSegfault11Tests' from project 'SwiftSegfault11')

Build failed    2021-11-19, 19:54    0.2 seconds
swift-ci commented 2 years ago

Comment by Berik Visschers (JIRA)

Reduced the problem to:

public actor MyActor {
    public let string = ""
} 
import XCTest
@testable import SwiftSegfault11

final class SwiftSegfault11ests: XCTestCase {
    func test() async {
        _ = await MyActor().string
    }
}