Context
The generator argument-resolution fallback getArgumentDTypesViaCallers / getArgumentShapesViaCallers (in TensorGenerator) recovers an argument's type by reading this.getNode()'s CallString context and inspecting the calling invoke's argument. It is the fallback used when the summary-local points-to set is empty. Roughly ten generators rely on it: Identity, MatMul, Sigmoid, Softmax, Where, Variable, Gradient, StopGradient, SoftmaxCrossEntropy, DatasetFromTensorSlices.
Limitation
The CallString is bounded by the k-CFA depth (typically 1-2). When the argument's producing value is constructed more than k frames above the generator's node and threaded down through parameters, the construction site is not in the call string, so the walk recovers nothing and the result degrades to ⊤ / UNKNOWN.
Status
Latent: no current fixture triggers it. Known cases are either within k frames, or fail for a different root cause (e.g. #570, where the value has no points-to set at all, independent of depth). Filed to track the ceiling so it is not rediscovered case-by-case.
Notes
Context
The generator argument-resolution fallback
getArgumentDTypesViaCallers/getArgumentShapesViaCallers(inTensorGenerator) recovers an argument's type by readingthis.getNode()'sCallStringcontext and inspecting the calling invoke's argument. It is the fallback used when the summary-local points-to set is empty. Roughly ten generators rely on it:Identity,MatMul,Sigmoid,Softmax,Where,Variable,Gradient,StopGradient,SoftmaxCrossEntropy,DatasetFromTensorSlices.Limitation
The
CallStringis bounded by the k-CFA depth (typically 1-2). When the argument's producing value is constructed more than k frames above the generator's node and threaded down through parameters, the construction site is not in the call string, so the walk recovers nothing and the result degrades to ⊤ /UNKNOWN.Status
Latent: no current fixture triggers it. Known cases are either within k frames, or fail for a different root cause (e.g. #570, where the value has no points-to set at all, independent of depth). Filed to track the ceiling so it is not rediscovered case-by-case.
Notes
TensorGenerator#365). Raising k for these resolutions, or a depth-independent heap-based resolution, would address it.