내 파일 에 (편리한) 계산 된 height
속성을 추가 하면 Swift 컴파일러가 segfault를 발생합니다. 여기서 무엇이 잘못 될 수 있습니까?UIView
UIViewExtension.swift
0 swift 0x00000001061e5608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x00000001061e5af4 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff894da5aa _sigtramp + 26
3 libsystem_platform.dylib 0xb03939841e997c88 _sigtramp + 2504775416
4 swift 0x00000001064c8bb9 swift::NominalTypeDecl::getMembers(bool) const + 41
5 swift 0x00000001055efab9 swift::irgen::ClassMetadataLayout<(anonymous namespace)::FindClassMethodIndex>::addClassMembers(swift::ClassDecl*) + 329
6 swift 0x00000001055e97b2 swift::irgen::emitVirtualMethodValue(swift::irgen::IRGenFunction&, llvm::Value*, swift::SILType, swift::SILDeclRef, swift::CanTypeWrapper<swift::SILFunctionType>, swift::ResilienceExpansion) + 434
7 swift 0x00000001056550d3 swift::SILVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::ValueBase*) + 42611
8 swift 0x000000010564a266 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 8678
9 swift 0x00000001055cb6f8 swift::irgen::IRGenModule::emitGlobalTopLevel() + 184
10 swift 0x00000001056376e3 performIRGeneration(swift::IRGenOptions&, swift::Module*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 1859
11 swift 0x0000000105638033 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 51
12 swift 0x00000001055aa65a frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 4842
13 swift 0x00000001055a935d main + 1533
14 libdyld.dylib 0x00007fff8a82e5fd start + 1
1. While emitting IR SIL function @_TFCSo6UIViewg6heightSd for 'anonname=0x7ff422892fd0' at <path redacted>/UIViewExtension.swift:60:5
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
이 문제를 해결하는 데 더 많은 정보가 필요하면 의견을 말하십시오. 감사!
편집하다:
이 질문의 컴파일러 오류를 반환하는 관련 .xcodeproj가 있습니다. 여기에서 다운로드
답변
이 작업을 수행했기 때문에이 오류가 발생했습니다.
if(currentMeal?.State == .Deleted){
}
대신에
if(currentMeal!.State == .Deleted){
}
그래서 조건 이이 오류를 일으킬 수 있다면 옵션으로 포장을 풀지 않은 것으로 생각합니다.
답변
Swift에서 컴파일러 segfault를 실행하면 편리한 줄 번호와 오류 메시지가 표시되지 않습니다. 문제를 추적하는 방법은 다음과 같습니다.
SegFaultDebugger.swift
프로젝트에서 라는 새 파일을 만듭니다 .- 이 새 파일에서 문제를 일으키는 클래스의 확장자를 정의하십시오.
- 메서드 그룹을 기본 파일에서
SegFaultDebugger.swift
. - 엮다.
이 시점에서 다음 세 가지 중 하나가 발생합니다.
- 여전히 원본 파일에서 segfault를 얻을 수 있습니다 . 방법을
SegFaultDebugger.swift
다시 원본 파일로 이동하고 다른 방법 세트를SegFaultDebugger.swift
. 반복 - 당신은에서 segfault를 얻습니다
SegFaultDebugger.swift
: 좋습니다 ! 이제 이진 검색을 사용하여 segfault를 특정 방법으로 고정하여 어떤 구조가 원인인지 파악할 수 있습니다. - 의미있는 컴파일러 오류가 발생합니다 . 좋습니다! 오류를 수정하십시오. 모든 것이 컴파일되면 메서드를 원래 파일로 다시 이동하십시오.
답변
내 프로토콜 중 하나를 확장하고 잘못 입력 된 선택적 유형 인수를 확장하는 동안이 오류가 발생했습니다.
protocol SomeProtocolName: class {
var someProtocolVariable: String { get set }
func someProtocolFunction(someProtocolVariable: String)
}
// MARK:
extension SomeProtocolName {
func someProtocolFunction(someProtocolVariable: String?) {
self.someProtocolVariable = someProtocolVariable
}
}
String
프로토 타입과 String?
확장 에서 함수 인수의 차이로 인해 Segmentation Fault 11이 발생했습니다 .
답변
이 오류도 있었고 다음과 같이 수정했습니다.
프로젝트를 확인하고 두 번 사용 된 파일을 찾아서 하나를 제거하거나 모두 삭제하고 다시 추가하십시오.
내 Xcode의 오류 :
: 0 : 오류 : 파일 이름 “AttributedString.swift”두 번 사용 : ‘/Users/…/CNJOB/CNJOB/AttributedString.swift’및 ‘/Users/…/CNJOB/CNJOB/AttributedString.swift’
: 0 : 참고 : 파일 이름은 동일한 이름의 개인 선언을 구분하는 데 사용됩니다.
: 0 : 오류 : 파일 이름 “APIClient.swift”가 두 번 사용됨 : ‘/Users/…/CNJOB/CNJOB/APIClient.swift’및 ‘/Users/…/CNJOB/CNJOB/APIClient.swift’
: 0 : 참고 : 파일 이름은 동일한 이름의 개인 선언을 구분하는 데 사용됩니다.
/ Applications / Xcode 3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 명령이 종료 코드 1로 실패했습니다.
답변
Xcode 7에서는 디버그 네비게이터에서 오류를 클릭하면 확장 된 충돌보기가 표시됩니다. 오른쪽에있는 햄버거 버튼을 클릭하면 오류가 확장되고 확장 된 오류 메시지의 맨 아래로 스크롤하면 오류가 발생한 위치를 볼 수 있습니다.
저에게는 두 가지 세분화 오류 오류가있었습니다. 위 그림에서 첫 번째는 접었을 때의 모습이고 두 번째는 햄버거 버튼을 펼쳤을 때의 모습입니다. 확장 된 회색 상자의 맨 아래에 컴파일러가 충돌 한 위치를 알려주는 메시지가 표시됩니다.
그러나 오류 메시지는 때때로 정보가 충분하지 않을 수 있으므로 오류가 발생한 위치를 알려 주지만 항상 원인과 해결 방법을 알려주지는 않습니다. 이 오류를 제거하는 것은 여전히 추측의 문제입니다.
답변
향후 Xcode / Swift 빌드에서 문제가 해결 될 때까지 간단한 해결 방법을 발견했습니다.
- 문제를 일으키는 모든 확장자
.swift
를 사용중인 파일에 넣으십시오.
제공된 예제 프로젝트에서의 내용 배치 UIViewExtension.swift
및 CALayerExtension.swift
위 AppDelegate.swift
문제가 해결 될 때까지 작동하는 Swift 코드 를 작성할 수 있기를 바랍니다 .
답변
나를 private
위해 정적 var fixed clang crash에 추가하십시오.
private static var taskId = 0