Closed
Description
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)
#​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)
#​12 0x0000000000fa4f9b swift::autodiff::PullbackEmitter::visit(swift::SILInstruction*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa4f9b)
#​13 0x0000000000fa3287 swift::autodiff::PullbackEmitter::visitSILBasicBlock(swift::SILBasicBlock*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa3287)
#​14 0x0000000000fa0dec swift::autodiff::PullbackEmitter::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xfa0dec)
#​15 0x0000000000f5fe01 swift::autodiff::VJPEmitter::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xf5fe01)
#​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)
#​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)
#​18 0x0000000000eb9511 (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xeb9511)
#​19 0x0000000000eb6569 (anonymous namespace)::Differentiation::run() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xeb6569)
#​20 0x0000000000adbf7f swift::SILPassManager::runModulePass(unsigned int) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xadbf7f)
#​21 0x0000000000adc90a swift::SILPassManager::execute() (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xadc90a)
#​22 0x0000000000ad8beb swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xad8beb)
#​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)
#​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)
#​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)
#​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)
#​27 0x0000000000ae5881 swift::runSILDiagnosticPasses(swift::SILModule&) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0xae5881)
#​28 0x00000000006c91d4 swift::CompilerInstance::performSILProcessing(swift::SILModule*) (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x6c91d4)
#​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)
#​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)
#​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)
#​32 0x00000000004eca82 main (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x4eca82)
#​33 0x00007f50d9a2ebbb __libc_start_main /build/glibc-oCLvUT/glibc-2.29/csu/../csu/libc-start.c:342:3
#​34 0x00000000004ec61a _start (/usr/local/google/home/marcrasi/Downloads/swift-toolchains/tensorflow-2020-04-15/usr/bin/swift+0x4ec61a)