Skip to content

SIL verification failed: A load with trivial ownership must load a trivial type: LI->getType().isTrivial(*LI->getFunction()) #79491

Closed
@hjyamauchi

Description

@hjyamauchi

Description

The main branch toolchain build started to crash around Feb 16, 2025 with a SIL verification failure when building swift-syntax in release mode in our Windows CI.

error: compile command failed due to signal 6 (use -v to see invocation)
SIL verification failed: A load with trivial ownership must load a trivial type: LI->getType().isTrivial(*LI->getFunction())
Verifying instruction:
     %29 = struct_element_addr %24 : $*Repro.Iterator, #Repro.Iterator.nxt // users: %73, %35, %42, %49, %31, %30
->   %35 = load [trivial] %29 : $*Optional<String> // user: %37
     br bb1(%23 : $Builtin.Int64, %12 : $Builtin.RawPointer, %6 : $__ContiguousArrayStorageBase, %35 : $Optional<String>) // id: %37
In function:
// specialized _copySequenceToContiguousArray<A>(_:)

Reproduction

A reduced test

swiftc Repro.swift -O -enable-library-evolution

e.g., https://download.swift.org/development/xcode/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a-osx.pkg

Repro.swift

public struct Repro: Sequence {
  public struct Iterator: IteratorProtocol {
    var nxt: String?
    let start: String

    init(_ token: String?, _ start: String) {
      self.nxt = token
      self.start = start
    }

    public mutating func next() -> String? {
      guard let token = self.nxt else { return nil }
      self.nxt = token
      if self.nxt != nil {
        self.nxt = nil
      }
      return token
    }
  }

  let pos: String

  public init(_ pos: String) {
    self.pos = pos
  }

  public func makeIterator() -> Iterator {
    return Iterator(nil, pos)
  }
}

Stack dump

On macOS

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.	Program arguments: /Users/hiroshi/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file Repro.swift -target arm64-apple-macosx15.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -color-diagnostics -enable-library-evolution -O -resource-dir /Users/hiroshi/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a.xctoolchain/usr/lib/swift -no-auto-bridging-header-chaining -module-name Repro -in-process-plugin-server-path /Users/hiroshi/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -plugin-path /Users/hiroshi/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a.xctoolchain/usr/lib/swift/host/plugins -plugin-path /Users/hiroshi/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2025-02-18-a.xctoolchain/usr/local/lib/swift/host/plugins -o /var/folders/ww/kxcj3hm12kd92gcwr9t3y7k40000gq/T/TemporaryDirectory.NTLNHO/Repro-1.o
1.	Apple Swift version 6.2-dev (LLVM 23dd6ab259a178a, Swift a4a3a41b50e111e)
2.	Compiling with effective version 5.10
3.	While evaluating request ExecuteSILPipelineRequest(Run pipelines { PrepareOptimizationPasses, EarlyModulePasses, HighLevel,Function+EarlyLoopOpt, HighLevel,Module+StackPromote, MidLevel,Function, ClosureSpecialize, LowLevel,Function, LateLoopOpt, SIL Debug Info Generator } on SIL for Repro)
4.	While running pass #3948 SILFunctionTransform "OwnershipModelEliminator" on SILFunction "@$ss30_copySequenceToContiguousArrayys0dE0Vy7ElementQzGxSTRzlF5ReproAGV_TB5".
 for <<debugloc at "<compiler-generated>":0:0>>5.	Found verification error when verifying before lowering ownership. Please re-run with -sil-verify-all to identify the actual pass that introduced the verification error.
6.	While verifying SIL function "@$ss30_copySequenceToContiguousArrayys0dE0Vy7ElementQzGxSTRzlF5ReproAGV_TB5".
 for <<debugloc at "<compiler-generated>":0:0>>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           0x0000000108bfa948 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  swift-frontend           0x0000000108bf902c llvm::sys::RunSignalHandlers() + 112
2  swift-frontend           0x0000000108bfafa0 SignalHandler(int, __siginfo*, void*) + 300
3  libsystem_platform.dylib 0x00000001954a2de4 _sigtramp + 56
4  libsystem_pthread.dylib  0x000000019546bf70 pthread_kill + 288
5  libsystem_c.dylib        0x0000000195378908 abort + 128
6  swift-frontend           0x0000000103d01fc4 swift::SILModule::print(llvm::raw_ostream&, swift::ModuleDecl*, swift::SILOptions const&, bool) const + 0
7  swift-frontend           0x0000000103d0a254 swift::SILVisitorBase<(anonymous namespace)::SILVerifier, void>::visitSILBasicBlock(swift::SILBasicBlock*) + 1312
8  swift-frontend           0x0000000103d09c34 (anonymous namespace)::SILVerifier::visitSILBasicBlock(swift::SILBasicBlock*) + 28
9  swift-frontend           0x0000000103d0839c (anonymous namespace)::SILVerifier::visitSILFunction(swift::SILFunction*) + 10844
10 swift-frontend           0x0000000103d0217c swift::SILFunction::verify(swift::CalleeCache*, bool, bool, bool) const + 224
11 swift-frontend           0x000000010373fdc4 (anonymous namespace)::OwnershipModelEliminator::run() + 268
12 swift-frontend           0x00000001037471e0 swift::SILPassManager::runPassOnFunction(unsigned int, swift::SILFunction*) + 1432
13 swift-frontend           0x0000000103748114 swift::SILPassManager::runFunctionPasses(unsigned int, unsigned int) + 1060
14 swift-frontend           0x00000001037450d8 swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 72
15 swift-frontend           0x0000000103745058 swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 68
16 swift-frontend           0x0000000103795c10 swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 28
17 swift-frontend           0x00000001037621e4 swift::ExecuteSILPipelineRequest::OutputType swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest, swift::ExecuteSILPipelineRequest::OutputType swift::evaluateOrFatal<swift::ExecuteSILPipelineRequest>(swift::Evaluator&, swift::ExecuteSILPipelineRequest)::'lambda'()>(swift::ExecuteSILPipelineRequest const&, swift::ExecuteSILPipelineRequest::OutputType swift::evaluateOrFatal<swift::ExecuteSILPipelineRequest>(swift::Evaluator&, swift::ExecuteSILPipelineRequest)::'lambda'()) + 204
18 swift-frontend           0x00000001037452b4 swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 64
19 swift-frontend           0x0000000103777f58 swift::runSILOptimizationPasses(swift::SILModule&) + 156
20 swift-frontend           0x0000000102f217e4 swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 636
21 swift-frontend           0x0000000102ccdfac performCompileStepsPostSILGen(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule>>, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 820
22 swift-frontend           0x0000000102ccd630 swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 656
23 swift-frontend           0x0000000102cd9828 withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>, bool) + 160
24 swift-frontend           0x0000000102ccf344 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 716
25 swift-frontend           0x0000000102cceb60 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2216
26 swift-frontend           0x0000000102a8904c swift::mainEntry(int, char const**) + 3100
27 dyld                     0x00000001950ec274 start + 2840

On Windows

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.      Program arguments: C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\bin\\swift-frontend.exe -frontend -c -primary-file C:\\Users\\hiroshi\\tmp\\repro.swift -target x86_64-unknown-windows-msvc -disable-objc-interop -sdk C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Platforms\\0.0.0\\Windows.platform\\Developer\\SDKs\\Windows.sdk\\ -color-diagnostics -enable-library-evolution -O -resource-dir C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\lib\\swift -no-auto-bridging-header-chaining -module-name repro -in-process-plugin-server-path C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\bin\\SwiftInProcPluginServer.dll -plugin-path C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\bin -plugin-path C:\\Users\\hiroshi\\AppData\\Local\\Programs\\Swift\\Toolchains\\0.0.0+Asserts\\usr\\local\\bin -o C:\\Users\\hiroshi\\AppData\\Local\\Temp\\TemporaryDirectory.WxsE8i\\repro-1.o
1.      compnerd.org Swift version 6.2-dev (LLVM 8bdbd74d77951ad, Swift 63b7f05d749d48f)
2.      Compiling with effective version 5.10
3.      While evaluating request ExecuteSILPipelineRequest(Run pipelines { PrepareOptimizationPasses, EarlyModulePasses, HighLevel,Function+EarlyLoopOpt, HighLevel,Module+StackPromote, MidLevel,Function, ClosureSpecialize, LowLevel,Function, LateLoopOpt, SIL Debug Info Generator } on SIL for repro)
4.      While running pass #3823 SILFunctionTransform "OwnershipModelEliminator" on SILFunction "@$ss30_copySequenceToContiguousArrayys0dE0Vy7ElementQzGxSTRzlF5repro5ReproV_TB5".
 for <<debugloc at "<compiler-generated>":0:0>>5.       Found verification error when verifying before lowering ownership. Please re-run with -sil-verify-all to identify the actual pass that introduced the verification error.
6.      While verifying SIL function "@$ss30_copySequenceToContiguousArrayys0dE0Vy7ElementQzGxSTRzlF5repro5ReproV_TB5".
 for <<debugloc at "<compiler-generated>":0:0>>Exception Code: 0x80000003
 #0 0x00007ff68067a825 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x6dea825)
 #1 0x00007fff47241ae9 (C:\WINDOWS\System32\ucrtbase.dll+0xc1ae9)
 #2 0x00007fff47224c11 (C:\WINDOWS\System32\ucrtbase.dll+0xa4c11)
 #3 0x00007ff67af478eb (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16b78eb)
 #4 0x00007ff67af328f8 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16a28f8)
 #5 0x00007ff67af52395 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16c2395)
 #6 0x00007ff67af56bdb (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16c6bdb)
 #7 0x00007ff67af5734f (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16c734f)
 #8 0x00007ff67af47a1c (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x16b7a1c)
 #9 0x00007ff67aa5ffb3 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x11cffb3)
#10 0x00007ff67a75312d (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xec312d)
#11 0x00007ff67a752337 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xec2337)
#12 0x00007ff67a74b867 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xebb867)
#13 0x00007ff67a74bb46 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xebbb46)
#14 0x00007ff67a74b557 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xebb557)
#15 0x00007ff67a7a202d (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xf1202d)
#16 0x00007ff67a74bcdf (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xebbcdf)
#17 0x00007ff67a734eb5 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0xea4eb5)
#18 0x00007ff67a134565 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x8a4565)
#19 0x00007ff679e9d87d (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x60d87d)
#20 0x00007ff679e9e35f (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x60e35f)
#21 0x00007ff679e9d0c4 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x60d0c4)
#22 0x00007ff679e9d57b (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x60d57b)
#23 0x00007ff679e9f444 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x60f444)
#24 0x00007ff679cee310 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x45e310)
#25 0x00007ff679ceddd7 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x45ddd7)
#26 0x00007ff6806d9914 (C:\Users\hiroshi\AppData\Local\Programs\Swift\Toolchains\0.0.0+Asserts\usr\bin\swift-frontend.exe+0x6e49914)
#27 0x00007fff48f1e8d7 (C:\WINDOWS\System32\KERNEL32.DLL+0x2e8d7)
#28 0x00007fff4975bf2c (C:\WINDOWS\SYSTEM32\ntdll.dll+0xbbf2c)

Expected behavior

No compiler crash

Environment

macOS and Windows

Additional information

No response

Metadata

Metadata

Assignees

Labels

SILSIL ownershipArea → compiler → SIL: SIL ownershipWindowsPlatform: WindowsbugA deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwaremacOSPlatform: macOS

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions