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-15201] [AutoDiff] Assertion failure when using a throwing function within gradient() #57523

Open
BradLarson opened this issue Sep 16, 2021 · 3 comments
Labels
AutoDiff bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself

Comments

@BradLarson
Copy link
Collaborator

Previous ID SR-15201
Radar rdar://problem/83202385
Original Reporter @BradLarson
Type Bug
Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, AutoDiff
Assignee None
Priority Medium

md5: 58e7af91200f09a12afa7f4d5dd2f852

Issue Description:

When a throwing function is used within gradient(), as in the following simple reproducer:

import _Differentiation

enum E: Error {
    case error
}

@differentiable(reverse)
func f(x: Double) throws -> Double {
    if x < 0 {
        throw E.error
    }
    else {
        return x * x
    }
}

print(gradient(at: 2.0, of: {x in try! f(x: x)}))

an assertion failure of "(!NodePtr->isKnownSentinel())" results. This seems closely related to TF-7, and may be another case of needing to add a diagnostic to catch this.

The full stack traces that results is as follows:

Assertion failed: (!NodePtr->isKnownSentinel()), function operator*, file /Users/bradlarson/Development/BradLarson2/swift-source/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h, line 138.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.  Program arguments: /Users/bradlarson/Development/BradLarson2/swift-source/build/Xcode-ReleaseAssert+swift-DebugAssert/swift-macosx-x86_64/Debug/bin/swift-frontend -frontend -c -primary-file ../../CompilerBugs/TryCrasher.swift -target x86_64-apple-macosx11.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -color-diagnostics -new-driver-path /Users/bradlarson/Development/BradLarson2/swift-source/build/Xcode-ReleaseAssert+swift-DebugAssert/swift-macosx-x86_64/Debug/bin/swift-driver -resource-dir /Users/bradlarson/Development/BradLarson2/swift-source/build/Xcode-ReleaseAssert+swift-DebugAssert/swift-macosx-x86_64/Debug/lib/swift -module-name TryCrasher -target-sdk-version 11.3.0 -o /var/folders/1s/z_s04yq55wq2jvgqghm8zm7w0000gp/T/TemporaryDirectory.ugUkH0/TryCrasher-1.o
1.  Swift version 5.6-dev (LLVM dc8233efdefef2a, Swift 7bc090907c169d0)
2.  Compiling with the current language version
3.  While evaluating request ExecuteSILPipelineRequest(Run pipelines { Mandatory Diagnostic Passes + Enabling Optimization Passes } on SIL for TryCrasher)
4.  While running pass #&#8203;106 SILModuleTransform "Differentiation".
5.  While canonicalizing `differentiable_function` SIL node   %16 = differentiable_function [parameters 0] [results 0] %15 : $@callee_guaranteed (Double) -> Double // user: %17
6.  While ...in SIL function "@main".
7.  While processing // differentiability witness for closure #&#8203;1 in 
sil_differentiability_witness private [reverse] [parameters 0] [results 0] @$s10TryCrasherS2dcfU_ : $@convention(thin) (Double) -> Double {
}

 on SIL function "@$s10TryCrasherS2dcfU_".
 for expression at [../../CompilerBugs/TryCrasher.swift:17:29 - line:17:47] RangeText="{x in try! f(x: x)"
8.  While generating VJP for SIL function "@$s10TryCrasherS2dcfU_".
 for expression at [../../CompilerBugs/TryCrasher.swift:17:29 - line:17:47] RangeText="{x in try! f(x: x)"
9.  While generating pullback for SIL function "@$s10TryCrasherS2dcfU_".
 for expression at [../../CompilerBugs/TryCrasher.swift:17:29 - line:17:47] RangeText="{x in try! f(x: x)"
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           0x000000010f5b28a7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
1  swift-frontend           0x000000010f5b16c8 llvm::sys::RunSignalHandlers() + 248
2  swift-frontend           0x000000010f5b30f6 SignalHandler(int) + 262
3  libsystem_platform.dylib 0x00007fff204c0d7d _sigtramp + 29
4  swift-frontend           0x0000000111ca0000 (anonymous namespace)::DarwinX86AsmBackend::getCompactUnwindRegNum(unsigned int) const::CU64BitRegs + 250390
5  libsystem_c.dylib        0x00007fff203d0411 abort + 120
6  libsystem_c.dylib        0x00007fff203cf7e8 err + 0
7  swift-frontend           0x000000010809d6ff llvm::ilist_iterator<llvm::ilist_detail::node_options<swift::SILInstruction, true, false, void>, true, false>::operator*() const + 79
8  swift-frontend           0x000000010809d662 llvm::simple_ilist<swift::SILInstruction>::back() + 34
9  swift-frontend           0x000000010809c70e swift::SILBasicBlock::back() + 30
10 swift-frontend           0x00000001091147e6 swift::autodiff::PullbackCloner::Implementation::run() + 7926
11 swift-frontend           0x00000001091128ac swift::autodiff::PullbackCloner::run() + 28
12 swift-frontend           0x000000010915dbb5 swift::autodiff::VJPCloner::Implementation::run() + 869
13 swift-frontend           0x000000010915e3bc swift::autodiff::VJPCloner::run() + 28
14 swift-frontend           0x000000010941977d (anonymous namespace)::DifferentiationTransformer::canonicalizeDifferentiabilityWitness(swift::SILDifferentiabilityWitness*, swift::autodiff::DifferentiationInvoker, swift::IsSerialized_t) + 2045
15 swift-frontend           0x000000010942837e emitDerivativeFunctionReference((anonymous namespace)::DifferentiationTransformer&, swift::SILBuilder&, swift::AutoDiffConfig const&, swift::AutoDiffDerivativeFunctionKind, swift::SILValue, swift::autodiff::DifferentiationInvoker, llvm::SmallVectorImpl<swift::AllocStackInst*>&) + 3934
16 swift-frontend           0x000000010942524b (anonymous namespace)::DifferentiationTransformer::promoteToDifferentiableFunction(swift::DifferentiableFunctionInst*, swift::SILBuilder&, swift::SILLocation, swift::autodiff::DifferentiationInvoker) + 827
17 swift-frontend           0x0000000109419a6e (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) + 526
18 swift-frontend           0x0000000109418889 (anonymous namespace)::Differentiation::run() + 2153
19 swift-frontend           0x00000001095033ac swift::SILPassManager::runModulePass(unsigned int) + 892
20 swift-frontend           0x00000001095069a5 swift::SILPassManager::execute() + 677
21 swift-frontend           0x00000001094ff37b swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 427
22 swift-frontend           0x00000001094ff155 swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 101
23 swift-frontend           0x000000010954e13a std::__1::tuple<> swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::callDerived<0ul>(swift::Evaluator&, std::__1::integer_sequence<unsigned long, 0ul>) const + 138
24 swift-frontend           0x000000010954e060 swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 32
25 swift-frontend           0x00000001095209dd llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 317
26 swift-frontend           0x00000001094ff5cb llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::operator()<swift::ExecuteSILPipelineRequest, (void*)0>(swift::ExecuteSILPipelineRequest const&) + 43
27 swift-frontend           0x00000001094ff45e swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 142
28 swift-frontend           0x0000000109546547 swift::runSILDiagnosticPasses(swift::SILModule&) + 119
29 swift-frontend           0x0000000107e3fa1e performMandatorySILPasses(swift::CompilerInvocation&, swift::SILModule*) + 94
30 swift-frontend           0x0000000107e3f88a swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 42
31 swift-frontend           0x0000000107b7131b 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*) + 811
32 swift-frontend           0x0000000107b70d00 performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 656
33 swift-frontend           0x0000000107b70a60 performAction(swift::CompilerInstance&, int&, swift::FrontendObserver*)::$_18::operator()(swift::CompilerInstance&) const + 144
34 swift-frontend           0x0000000107b709c0 bool llvm::function_ref<bool (swift::CompilerInstance&)>::callback_fn<performAction(swift::CompilerInstance&, int&, swift::FrontendObserver*)::$_18>(long, swift::CompilerInstance&) + 48
35 swift-frontend           0x0000000107b66acc llvm::function_ref<bool (swift::CompilerInstance&)>::operator()(swift::CompilerInstance&) const + 60
36 swift-frontend           0x0000000107b65212 withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>) + 354
37 swift-frontend           0x0000000107b5e0d3 performAction(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1059
38 swift-frontend           0x0000000107b4f982 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 290
39 swift-frontend           0x0000000107b4e7e5 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2613
40 swift-frontend           0x0000000107ab96b2 run_driver(llvm::StringRef, llvm::ArrayRef<char const*>) + 354
41 swift-frontend           0x0000000107ab8a19 swift::mainEntry(int, char const**) + 1737
42 swift-frontend           0x0000000107a8c7d2 main + 34
43 libdyld.dylib            0x00007fff20496f5d start + 1
@typesanitizer
Copy link

@swift-ci create

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@philipturner
Copy link
Contributor

philipturner commented May 8, 2022

This is very similar to #57945 (formerly SR-15666). The stack trace and assertion failure are very close, and they both started appearing at the same time. That suggests that both bugs have the same underlying source.

The reproducer can be narrowed down further, but you need to pass swiftc -parse-stdlib file.swift because it strips down gradient to its underlying built-in. This is the same mechanism at lets philipturner/differentiation access the built-ins required for differential operators.

import _Differentiation
import Swift // Required for accessing `Builtin`.

// Having the `throws` attribute makes this function not differentiable. The
// compiler should gracefully fail with that warning, but doesn't.
func wrapped(_ x: Double) throws -> Double {
  return x
}

func encapsulating(_ x: Double) -> Double {
  return try! wrapped(x)
}

_ = Builtin.applyDerivative_vjp(encapsulating(_:), 2.0)
Replication of the original reproducer's crash on the 2021-04-18 toolchain
(base) philipturner@m1-max-mbp bug % swiftc -parse-stdlib file.swift
error: compile command failed due to signal 6 (use -v to see invocation)
Assertion failed: (!NodePtr->isKnownSentinel()), function operator*, file /Users/buildnode/jenkins/workspace/oss-swift-package-macos/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h, line 138.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.	Program arguments: /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2021-04-18-a.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file file.swift -disable-objc-attr-requires-foundation-module -target x86_64-apple-macosx12.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -color-diagnostics -parse-stdlib -new-driver-path /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2021-04-18-a.xctoolchain/usr/bin/swift-driver -resource-dir /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2021-04-18-a.xctoolchain/usr/lib/swift -module-name file -target-sdk-version 12.3.0 -o /var/folders/qn/86czb43d3pv03bfnxvb3x66h0000gn/T/TemporaryDirectory.aEAI2H/file-1.o
1.	Apple Swift version 5.5-dev (LLVM fb5a91b4e892ed9, Swift f17142883421ec0)
2.	While evaluating request ExecuteSILPipelineRequest(Run pipelines { Mandatory Diagnostic Passes + Enabling Optimization Passes } on SIL for file.file)
3.	While running pass #24 SILModuleTransform "Differentiation".
4.	While canonicalizing `differentiable_function` SIL node   %4 = differentiable_function [parameters 0] [results 0] %3 : $@callee_guaranteed (Double) -> Double // user: %5
5.	While ...in SIL function "@main".
6.	While processing // differentiability witness for encapsulating(_:)
sil_differentiability_witness private [reverse] [parameters 0] [results 0] @$s4file13encapsulatingyS2dF : $@convention(thin) (Double) -> Double {
}

 on SIL function "@$s4file13encapsulatingyS2dF".
 for 'encapsulating(_:)' (at file.swift:10:1)
7.	While generating VJP for SIL function "@$s4file13encapsulatingyS2dF".
 for 'encapsulating(_:)' (at file.swift:10:1)
8.	While generating pullback for SIL function "@$s4file13encapsulatingyS2dF".
 for 'encapsulating(_:)' (at file.swift:10:1)
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           0x0000000109006e87 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
1  swift-frontend           0x0000000109006045 llvm::sys::RunSignalHandlers() + 85
2  swift-frontend           0x00000001090074a6 SignalHandler(int) + 262
3  libsystem_platform.dylib 0x00007ff817e7edfd _sigtramp + 29
4  libsystem_platform.dylib 0x000000031971d1f0 _sigtramp + 18446603383491650576
5  libsystem_c.dylib        0x00007ff817db4d24 abort + 123
6  libsystem_c.dylib        0x00007ff817db40cb err + 0
7  swift-frontend           0x0000000109287e23 swift::autodiff::PullbackCloner::Implementation::run() (.cold.19) + 35
8  swift-frontend           0x0000000104ddf13c swift::autodiff::PullbackCloner::Implementation::run() + 9724
9  swift-frontend           0x0000000104ddcb12 swift::autodiff::PullbackCloner::run() + 18
10 swift-frontend           0x0000000104dfe41d swift::autodiff::VJPCloner::Implementation::run() + 1597
11 swift-frontend           0x0000000104dfeb12 swift::autodiff::VJPCloner::run() + 18
12 swift-frontend           0x0000000104f35564 (anonymous namespace)::DifferentiationTransformer::canonicalizeDifferentiabilityWitness(swift::SILDifferentiabilityWitness*, swift::autodiff::DifferentiationInvoker, swift::IsSerialized_t) + 6804
13 swift-frontend           0x0000000104f39e36 (anonymous namespace)::DifferentiationTransformer::promoteToDifferentiableFunction(swift::DifferentiableFunctionInst*, swift::SILBuilder&, swift::SILLocation, swift::autodiff::DifferentiationInvoker) + 9894
14 swift-frontend           0x0000000104f35860 (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) + 560
15 swift-frontend           0x0000000104f331f2 (anonymous namespace)::Differentiation::run() + 2114
16 swift-frontend           0x0000000104f84f8e swift::SILPassManager::runModulePass(unsigned int) + 702
17 swift-frontend           0x0000000104f8b4ca swift::SILPassManager::execute() + 666
18 swift-frontend           0x0000000104f817e8 swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 72
19 swift-frontend           0x0000000104f81771 swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 65
20 swift-frontend           0x0000000104fa65dd swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 29
21 swift-frontend           0x0000000104f8dcf0 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 240
22 swift-frontend           0x0000000104f81a22 swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 82
23 swift-frontend           0x0000000104f90047 swift::runSILDiagnosticPasses(swift::SILModule&) + 87
24 swift-frontend           0x000000010474f56c swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 60
25 swift-frontend           0x000000010462e1a0 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*) + 640
26 swift-frontend           0x000000010462db9d performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 365
27 swift-frontend           0x0000000104622538 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 5016
28 swift-frontend           0x0000000104572386 main + 566
29 dyld                     0x000000021110351e start + 462
30 dyld                     0x0000000000000005 start + 18446744064833342645
Different crash found on the 2021-01-27 toolchain
(base) philipturner@m1-max-mbp bug % swiftc -parse-stdlib file.swift
SIL verification failed: switch_enum destination for case w/ args must take 1 argument: dest->getArguments().size() == 1
Verifying instruction:
   **%2** = destructure_struct %1 : $_AD__$s4file13encapsulatingyS2dF_bb1__PB__src_0_wrt_0 // user: %3
->   switch_enum %2 : $_AD__$s4file13encapsulatingyS2dF_bb1__Pred__src_0_wrt_0, case #_AD__$s4file13encapsulatingyS2dF_bb1__Pred__src_0_wrt_0.bb0!enumelt: bb1 // id: %3
In function:
// pullback of encapsulating(_:) with respect to parameters {0} and results {0}
sil private [ossa] @$s4file13encapsulatingyS2dFTJpSpSr : $@convention(thin) (Double, @owned _AD__$s4file13encapsulatingyS2dF_bb1__PB__src_0_wrt_0) -> Double {
// %1                                             // user: %2
bb0(%0 : $Double, %1 : $_AD__$s4file13encapsulatingyS2dF_bb1__PB__src_0_wrt_0):
  %2 = destructure_struct %1 : $_AD__$s4file13encapsulatingyS2dF_bb1__PB__src_0_wrt_0 // user: %3
  switch_enum %2 : $_AD__$s4file13encapsulatingyS2dF_bb1__Pred__src_0_wrt_0, case #_AD__$s4file13encapsulatingyS2dF_bb1__Pred__src_0_wrt_0.bb0!enumelt: bb1 // id: %3

bb1:                                              // Preds: bb0
  %4 = alloc_stack $Double                        // users: %9, %8, %7
  %5 = witness_method $Double, #AdditiveArithmetic.zero!getter : <Self where Self : AdditiveArithmetic> (Self.Type) -> () -> Self : $@convention(witness_method: AdditiveArithmetic) <τ_0_0 where τ_0_0 : AdditiveArithmetic> (@thick τ_0_0.Type) -> @out τ_0_0 // user: %7
  %6 = metatype $@thick Double.Type               // user: %7
  %7 = apply %5<Double>(%4, %6) : $@convention(witness_method: AdditiveArithmetic) <τ_0_0 where τ_0_0 : AdditiveArithmetic> (@thick τ_0_0.Type) -> @out τ_0_0
  %8 = load [trivial] %4 : $*Double               // user: %10
  dealloc_stack %4 : $*Double                     // id: %9
  return %8 : $Double                             // id: %10
} // end sil function '$s4file13encapsulatingyS2dFTJpSpSr'

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.	Program arguments: /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2021-01-27-a.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file file.swift -disable-objc-attr-requires-foundation-module -target arm64-apple-darwin21.4.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -color-diagnostics -parse-stdlib -target-sdk-version 12.3 -module-name file -o /var/folders/qn/86czb43d3pv03bfnxvb3x66h0000gn/T/file-3677d5.o 
1.	Apple Swift version 5.4-dev (LLVM e2976fe639d1f50, Swift f9be289b9e04b3d)
2.	While evaluating request ExecuteSILPipelineRequest(Run pipelines { Mandatory Diagnostic Passes + Enabling Optimization Passes } on SIL for file.file)
3.	While running pass #24 SILModuleTransform "Differentiation".
4.	While canonicalizing `differentiable_function` SIL node   %4 = differentiable_function [parameters 0] [results 0] %3 : $@callee_guaranteed (Double) -> Double // user: %5
5.	While ...in SIL function "@main".
6.	While processing // differentiability witness for encapsulating(_:)
sil_differentiability_witness private [parameters 0] [results 0] @$s4file13encapsulatingyS2dF : $@convention(thin) (Double) -> Double {
}

 on SIL function "@$s4file13encapsulatingyS2dF".
 for 'encapsulating(_:)' (at file.swift:10:1)
7.	While generating VJP for SIL function "@$s4file13encapsulatingyS2dF".
 for 'encapsulating(_:)' (at file.swift:10:1)
8.	While verifying SIL function "@$s4file13encapsulatingyS2dFTJpSpSr".
 for 'encapsulating(_:)' (at file.swift:10:1)
0  swift-frontend           0x0000000105d2f9fc llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 52
1  swift-frontend           0x0000000105d2ec5c llvm::sys::RunSignalHandlers() + 128
2  swift-frontend           0x0000000105d2ffe4 SignalHandler(int) + 292
3  libsystem_platform.dylib 0x000000019cd194c4 _sigtramp + 56
4  libsystem_pthread.dylib  0x000000019cd01ee0 pthread_kill + 288
5  libsystem_c.dylib        0x000000019cc3c340 abort + 168
6  swift-frontend           0x0000000102a4fe24 (anonymous namespace)::SILVerifier::_require(bool, llvm::Twine const&, std::__1::function<void ()> const&) + 1444
7  swift-frontend           0x0000000102a58614 swift::SILInstructionVisitor<(anonymous namespace)::SILVerifier, void>::visit(swift::SILInstruction*) + 15908
8  swift-frontend           0x0000000102a53bf4 (anonymous namespace)::SILVerifier::visitSILBasicBlock(swift::SILBasicBlock*) + 1176
9  swift-frontend           0x0000000102a523d0 (anonymous namespace)::SILVerifier::visitSILFunction(swift::SILFunction*) + 7844
10 swift-frontend           0x0000000102a4c4f4 swift::SILFunction::verify(bool) const + 76
11 swift-frontend           0x00000001024f5bf8 swift::autodiff::PullbackCloner::run() + 52
12 swift-frontend           0x0000000102511df8 swift::autodiff::VJPCloner::Implementation::run() + 1268
13 swift-frontend           0x00000001025123d4 swift::autodiff::VJPCloner::run() + 24
14 swift-frontend           0x000000010260658c (anonymous namespace)::DifferentiationTransformer::canonicalizeDifferentiabilityWitness(swift::SILDifferentiabilityWitness*, swift::autodiff::DifferentiationInvoker, swift::IsSerialized_t) + 5484
15 swift-frontend           0x000000010260a404 (anonymous namespace)::DifferentiationTransformer::promoteToDifferentiableFunction(swift::DifferentiableFunctionInst*, swift::SILBuilder&, swift::SILLocation, swift::autodiff::DifferentiationInvoker) + 8448
16 swift-frontend           0x00000001026067dc (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) + 460
17 swift-frontend           0x0000000102604790 (anonymous namespace)::Differentiation::run() + 1280
18 swift-frontend           0x00000001026487d4 swift::SILPassManager::runModulePass(unsigned int) + 516
19 swift-frontend           0x000000010264d820 swift::SILPassManager::execute() + 628
20 swift-frontend           0x0000000102645938 swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 68
21 swift-frontend           0x00000001026458dc swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 52
22 swift-frontend           0x00000001026642c0 swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 28
23 swift-frontend           0x000000010264f6f8 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 252
24 swift-frontend           0x0000000102645b3c swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 84
25 swift-frontend           0x00000001026511f4 swift::runSILDiagnosticPasses(swift::SILModule&) + 92
26 swift-frontend           0x000000010216c028 swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 68
27 swift-frontend           0x000000010207a798 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*) + 716
28 swift-frontend           0x000000010207a24c bool llvm::function_ref<bool (swift::CompilerInstance&)>::callback_fn<performAction(swift::CompilerInstance&, int&, swift::FrontendObserver*)::$_19>(long, swift::CompilerInstance&) + 312
29 swift-frontend           0x000000010206f1a0 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 4292
30 swift-frontend           0x000000010201cc88 main + 784
31 dyld                     0x000000010d385088 start + 516
<unknown>:0: error: unable to execute command: Abort trap: 6
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
Error on 2020-07-22 toolchain from unsupported control flow
(base) philipturner@m1-max-mbp bug % swiftc -parse-stdlib file.swift
file.swift:14:33: error: function is not differentiable
_ = Builtin.applyDerivative_vjp(encapsulating(_:), 2.0)
                                ^~~~~~~~~~~~~~~~~
file.swift:11:15: note: cannot differentiate unsupported control flow
  return try! wrapped(x)
              ^

@jkshtj
Copy link
Collaborator

jkshtj commented May 3, 2024

Still crashes on 05/24 toolchain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AutoDiff bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself
Projects
None yet
Development

No branches or pull requests

4 participants