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-4453] swift segfaults when compiling main.swift if Xcode's "Gather coverage data" is enabled #47030

Closed
macdrevx opened this issue Mar 31, 2017 · 6 comments
Assignees
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. code coverage Area → source tooling: code coverage compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software

Comments

@macdrevx
Copy link

Previous ID SR-4453
Radar rdar://problem/31383534
Original Reporter @macdrevx
Type Bug
Status Resolved
Resolution Done

Attachment: Download

Environment
  • Xcode 8.3 (8E162)

  • macOS 10.12.4 (16E195)

  • Swift:

$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift version 3.1 (swiftlang-802.0.48 clang-802.0.38)
Target: x86_64-apple-macosx10.9
Additional Detail from JIRA
Votes 1
Component/s Compiler
Labels Bug, CodeCoverage, CompilerCrash
Assignee @vedantk
Priority Medium

md5: cf3188644ba83d7072d26cc15050a529

Issue Description:

The swift compiler segfaults when compiling the attached project's main.swift if Xcode's "Gather coverage data" setting for the scheme's "Test" action is enabled.

Steps to reproduce:

1. Open the attached Xcode project and try to run the unit tests.

Expected results:

The tests compile and run

Actual results:

The tests do not compile because the compiler crashes

Stack Trace:

0  swift                    0x000000010ed84eb7 PrintStackTraceSignalHandler(void*) + 39
1  swift                    0x000000010ed84366 SignalHandler(int) + 646
2  libsystem_platform.dylib 0x00007fffe7634b3a _sigtramp + 26
3  libsystem_platform.dylib 0x00007fff540d0600 _sigtramp + 1823062752
4  swift                    0x000000010cbb98c5 (anonymous namespace)::Traversal::doIt(swift::Decl*) + 917
5  swift                    0x000000010cbba12a swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Stmt*) + 378
6  swift                    0x000000010cbb99bf (anonymous namespace)::Traversal::doIt(swift::Decl*) + 1167
7  swift                    0x000000010c436a35 walkForProfiling(swift::Decl*, swift::ASTWalker&) + 629
8  swift                    0x000000010c43b542 swift::Lowering::ProfilerRAII::ProfilerRAII(swift::Lowering::SILGenModule&, swift::Decl*) + 1538
9  swift                    0x000000010c3910ed swift::ASTVisitor<swift::Lowering::SILGenModule, void, void, void, void, void, void>::visit(swift::Decl*) + 253
10 swift                    0x000000010c39033b swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) + 1483
11 swift                    0x000000010c391f19 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional<unsigned int>, bool, bool) + 1593
12 swift                    0x000000010bba40b2 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 42402
13 swift                    0x000000010bb5388c main + 9052
14 libdyld.dylib            0x00007fffe7425235 start + 1
Stack dump:
0.  Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/andrew/Developer/CoverageTest/CoverageTest/ViewController.swift /Users/andrew/Developer/CoverageTest/CoverageTest/AppDelegate.swift -primary-file /Users/andrew/Developer/CoverageTest/CoverageTest/main.swift -target x86_64-apple-ios10.3 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk -I /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Products/Debug-iphonesimulator -F /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Products/Debug-iphonesimulator -enable-testing -g -module-cache-path /Users/andrew/Library/Developer/Xcode/DerivedData/ModuleCache -profile-generate -profile-coverage-mapping -D DEBUG -serialize-debugging-options -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/CoverageTest-generated-files.hmap -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/CoverageTest-own-target-headers.hmap -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/CoverageTest-all-target-headers.hmap -Xcc -iquote -Xcc /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/CoverageTest-project-headers.hmap -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Products/Debug-iphonesimulator/include -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/DerivedSources/x86_64 -Xcc -I/Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/andrew/Developer/CoverageTest -emit-module-doc-path /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main~partial.swiftdoc -serialize-diagnostics-path /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main.dia -Onone -module-name CoverageTest -emit-module-path /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main~partial.swiftmodule -emit-dependencies-path /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main.swiftdeps -o /Users/andrew/Library/Developer/Xcode/DerivedData/CoverageTest-gjtqbwdzmqylodfyrkbtxkprkwmc/Build/Intermediates/CodeCoverage/Intermediates/CoverageTest.build/Debug-iphonesimulator/CoverageTest.build/Objects-normal/x86_64/main.o
@macdrevx
Copy link
Author

Updated attachment because the original one didn't share the scheme where "Gather coverage data" was enabled.

@swift-ci
Copy link
Collaborator

Comment by Hercules Junior (JIRA)

I was having the same issue.
I have found a workaround:

var delegateClassName: String? = nil
if ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil {
    delegateClassName = NSStringFromClass(AppDelegate.self)
}

@macdrevx
Copy link
Author

Thanks herculesjr (JIRA User). That workaround works for me too. I modified it a little bit for my purposes:

let delegateClassName: String
if ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil {
    delegateClassName = NSStringFromClass(AppDelegate.self)
} else {
    delegateClassName = NSStringFromClass(MockAppDelegate.self)
}

@belkadan
Copy link
Contributor

cc @vedantk

@vedantk
Copy link
Member

vedantk commented Mar 31, 2017

Minimal top-level code decl which reproduces the issue: `var i2 = true ? 1 : 0;`

@vedantk
Copy link
Member

vedantk commented Apr 1, 2017

#8472

@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. code coverage Area → source tooling: code coverage 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

5 participants