Skip to content

[SR-12720] Assertion failure when calling non-differentiable initializer #55165

Closed
@marcrasi

Description

@marcrasi
mannequin
Previous ID SR-12720
Radar None
Original Reporter @marcrasi
Type Bug
Status Closed
Resolution Duplicate
Additional Detail from JIRA
Votes 0
Component/s
Labels Bug, AutoDiff
Assignee None
Priority Medium

md5: d11394c8e933ec9a587b0c96bde4111d

duplicates:

  • TF-969 Struct projection differentiation crash when corresponding TangentVector property does not exist

Issue Description:

To reproduce, clone marcrasi/SwiftFusion@25d6cfc and run `swift build`.

Expected behavior: Diagnostic explaining that `self.init(coordinateStorage🙂` is non-differentiable.

Actual behavior:

swift: /swift-base/swift/lib/SILOptimizer/Utils/Differentiation/PullbackEmitter.cpp:339: swift::SILValue swift::autodiff::PullbackEmitter::getAdjointProjection(swift::SILBasicBlock *, swift::SILValue): Assertion `tanFieldLookup.size() == 1' failed.
Stack dump:
0.      Program arguments: /usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift -frontend -c /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/AnyDifferentiable.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/DataTypes.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/Dictionary+Differentiable.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/Jacobian.swift /usr/local/google/ho
me/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/Manifold.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/StandardBasis.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Core/Vector.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Pose2.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot2.swift -primary-file /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot3.swift /usr/loc
al/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Inference/Errors.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Inference/Factor.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Inference/FactorGraph.swi
ft /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Inference/GaussianFactorGraph.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Inference/JacobianFactor.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/Swift
Fusion/Inference/VectorValues.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Optimizers/CGLS.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Optimizers/NLCG.swift /usr/local/google/home/marcrasi/git/SwiftFusion/Sou
rces/SwiftFusion/Optimizers/SGD.swift -emit-module-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/SwiftFusion.build/Geometry/Rot3~partial.swiftmodule -emit-module-doc-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/SwiftFusion.build/Geometry/Rot3~partial.swiftdoc -emit-module-source-info-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/SwiftFusion.build/Geometry/Rot3~partial.swiftsourceinfo -emit-depen
dencies-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/SwiftFusion.build/Geometry/Rot3.d -emit-reference-dependencies-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/SwiftFusion.bu
ild/Geometry/Rot3.swiftdeps -target x86_64-unknown-linux-gnu -disable-objc-interop -I /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug -enable-testing -g -module-cache-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x8
6_64-unknown-linux-gnu/debug/ModuleCache -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -color-diagnostics -enable-anonymous-context-mangled-names -parse-as-library -module-name SwiftFusion -o /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-l
inux-gnu/debug/SwiftFusion.build/Geometry/Rot3.swift.o -index-store-path /usr/local/google/home/marcrasi/git/SwiftFusion/.build/x86_64-unknown-linux-gnu/debug/index/store -index-system-modules
1.      Swift version 5.3-dev (LLVM e8106fe77b, Swift 0f3775689b)
2.      While evaluating request ExecuteSILPipelineRequest(Run pipelines { Guaranteed Passes } on SIL for SwiftFusion.SwiftFusion)
3.      While running pass #​807 SILModuleTransform "Differentiation".
4.      While canonicalizing `differentiable_function` SIL node   %29 = differentiable_function [parameters 0] %28 : $@convention(method) (@owned Matrix3Coordinate, @thin Rot3.Type) -> @owned Rot3 // users: %31, %30
5.      While ...in SIL function "@AD__$s11SwiftFusion4Rot3VyACSd_S8dtcfC__vjp_src_0_wrt_0_1_2_3_4_5_6_7_8".
 for 'init(_:_:_:_:_:_:_:_:_:)' (at /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot3.swift:18:10)
6.      While processing // differentiability witness for Rot3.init(coordinateStorage:)
sil_differentiability_witness private [parameters 0] [results 0] @$s11SwiftFusion4Rot3V17coordinateStorageAcA17Matrix3CoordinateV_tcfC : $@convention(method) (@owned Matrix3Coordinate, @thin Rot3.Type) -> @owned Rot3 {
}

 on SIL function "@$s11SwiftFusion4Rot3V17coordinateStorageAcA17Matrix3CoordinateV_tcfC".
 for 'init(coordinateStorage:)' (at /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot3.swift:9:10)
7.      While generating VJP for SIL function "@$s11SwiftFusion4Rot3V17coordinateStorageAcA17Matrix3CoordinateV_tcfC".
 for 'init(coordinateStorage:)' (at /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot3.swift:9:10)
8.      While generating pullback for SIL function "@$s11SwiftFusion4Rot3V17coordinateStorageAcA17Matrix3CoordinateV_tcfC".
 for 'init(coordinateStorage:)' (at /usr/local/google/home/marcrasi/git/SwiftFusion/Sources/SwiftFusion/Geometry/Rot3.swift:9:10)
 #​0 0x000000000516c814 PrintStackTraceSignalHandler(void*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x516c814)
 #​1 0x000000000516a4ce llvm::sys::RunSignalHandlers() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x516a4ce)
 #​2 0x000000000516caec SignalHandler(int) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x516caec)
 #​3 0x00007f50d9fa6520 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x13520)
 #​4 0x00007f50d9a41f61 raise /build/glibc-oCLvUT/glibc-2.29/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #​5 0x00007f50d9a2d535 abort /build/glibc-oCLvUT/glibc-2.29/stdlib/abort.c:81:7
 #​6 0x00007f50d9a2d40f _nl_load_domain /build/glibc-oCLvUT/glibc-2.29/intl/loadmsgcat.c:1177:9
 #​7 0x00007f50d9a3ab92 (/lib/x86_64-linux-gnu/libc.so.6+0x32b92)
 #​8 0x0000000000f9eb43 swift::autodiff::PullbackEmitter::getAdjointProjection(swift::SILBasicBlock*, swift::SILValue) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xf9eb43)
 #​9 0x0000000000f9cabb swift::autodiff::PullbackEmitter::getAdjointBuffer(swift::SILBasicBlock*, swift::SILValue) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xf9cabb)
#​10 0x0000000000faac1a swift::autodiff::PullbackEmitter::visitStoreOperation(swift::SILBasicBlock*, swift::SILLocation, swift::SILValue, swift::SILValue) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfaac1a)
#&#8203;11 0x0000000000fa55c3 swift::SILInstructionVisitor<swift::autodiff::PullbackEmitter, void>::visit(swift::SILInstruction*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa55c3)
#&#8203;12 0x0000000000fa4f9b swift::autodiff::PullbackEmitter::visit(swift::SILInstruction*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa4f9b)
#&#8203;13 0x0000000000fa3287 swift::autodiff::PullbackEmitter::visitSILBasicBlock(swift::SILBasicBlock*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa3287)
#&#8203;14 0x0000000000fa0dec swift::autodiff::PullbackEmitter::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa0dec)
#&#8203;15 0x0000000000f5fe01 swift::autodiff::VJPEmitter::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xf5fe01)
#&#8203;16 0x0000000000eb91b4 (anonymous namespace)::DifferentiationTransformer::canonicalizeDifferentiabilityWitness(swift::SILFunction*, swift::SILDifferentiabilityWitness*, swift::autodiff::DifferentiationInvoker, swift::IsSerialized_t) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xeb91b4)
#&#8203;17 0x0000000000ebd97b (anonymous namespace)::DifferentiationTransformer::promoteToDifferentiableFunction(swift::DifferentiableFunctionInst*, swift::SILBuilder&, swift::SILLocation, swift::autodiff::DifferentiationInvoker) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xebd97b)
#&#8203;18 0x0000000000eb9511 (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xeb9511)
#&#8203;19 0x0000000000eb6569 (anonymous namespace)::Differentiation::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xeb6569)
#&#8203;20 0x0000000000adbf7f swift::SILPassManager::runModulePass(unsigned int) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xadbf7f)
#&#8203;21 0x0000000000adc90a swift::SILPassManager::execute() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xadc90a)
#&#8203;22 0x0000000000ad8beb swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xad8beb)
#&#8203;23 0x0000000000ad8adb swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xad8adb)
#&#8203;24 0x0000000000af852a swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xaf852a)
#&#8203;25 0x0000000000ae3791 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xae3791)
#&#8203;26 0x0000000000ad8c75 swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xad8c75)
#&#8203;27 0x0000000000ae5881 swift::runSILDiagnosticPasses(swift::SILModule&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xae5881)
#&#8203;28 0x00000000006c91d4 swift::CompilerInstance::performSILProcessing(swift::SILModule*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x6c91d4)
#&#8203;29 0x0000000000572ada performCompileStepsPostSILGen(swift::CompilerInstance&, swift::CompilerInvocation const&, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, bool, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, bool, int&, swift::FrontendObserver*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x572ada)
#&#8203;30 0x000000000056622d performCompile(swift::CompilerInstance&, swift::CompilerInvocation const&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x56622d)
#&#8203;31 0x000000000056346d swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x56346d)
#&#8203;32 0x00000000004eca82 main (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x4eca82)
#&#8203;33 0x00007f50d9a2ebbb __libc_start_main /build/glibc-oCLvUT/glibc-2.29/csu/../csu/libc-start.c:342:3
#&#8203;34 0x00000000004ec61a _start (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x4ec61a)

Metadata

Metadata

Assignees

No one assigned

    Labels

    AutoDiffbugA deviation from expected or documented behavior. Also: expected but undesirable behavior.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions