{"record":{"id":"84c89d80a8ec15c7","repo":"jax-ml/jax","slug":"the-traceback-property-was-called-on-self-error","errorCode":null,"errorMessage":"The traceback property was called on {self._error_repr()}.{self._origin_msg()}","messagePattern":"The traceback property was called on (.+?)\\.(.+?)","errorType":"exception","errorClass":"ConcretizationTypeError","httpStatus":null,"severity":"error","filePath":"jax/_src/core.py","lineNumber":1278,"sourceCode":"  def is_fully_addressable(self):\n    raise ConcretizationTypeError(self,\n      f\"The is_fully_addressable property was called on {self._error_repr()}.\"\n      f\"{self._origin_msg()}\")\n\n  @property\n  def is_fully_replicated(self):\n    raise ConcretizationTypeError(self,\n      f\"The is_fully_replicated property was called on {self._error_repr()}.\"\n      f\"{self._origin_msg()}\")\n\n  def on_device_size_in_bytes(self):\n    raise ConcretizationTypeError(self,\n      f\"The on_device_size_in_bytes() method was called on {self._error_repr()}.\"\n      f\"{self._origin_msg()}\")\n\n  @property\n  def traceback(self):\n    raise ConcretizationTypeError(self,\n      f\"The traceback property was called on {self._error_repr()}.\"\n      f\"{self._origin_msg()}\")\n\n  def unsafe_buffer_pointer(self):\n    raise ConcretizationTypeError(self,\n      f\"The unsafe_buffer_pointer() method was called on {self._error_repr()}.\"\n      f\"{self._origin_msg()}\")\n\n_jax.set_tracer_class(Tracer)\n\n# these can be used to set up forwarding of properties and instance methods from\n# Tracer instances to the underlying avals\naval_property = namedtuple(\"aval_property\", [\"fget\"])\naval_method = namedtuple(\"aval_method\", [\"fun\"])\n\npytype_aval_mappings[Tracer] = lambda x: x.aval\ndtypes.register_canonicalize_value_handler(Tracer, None)\n","sourceCodeStart":1260,"sourceCodeEnd":1296,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/core.py#L1260-L1296","documentation":"ConcretizationTypeError raised when the Tracer.traceback property is accessed. traceback exposes the Python traceback captured where a materialized jax.Array was created (used for error reporting on deleted/uninitialized arrays); tracers are created internally during tracing and the property is not meaningful, so the stub raises.","triggerScenarios":"Reading `x.traceback` on a value being traced inside jit/grad/vmap/pmap/scan/remat or a custom rule, typically in error-reporting or debug-logging code.","commonSituations":"Custom exception handlers or audit logging that records x.traceback for arrays, run on traced values; debugging utilities for 'Array has been deleted' errors reused inside transformed functions; wrapper libraries that capture provenance on every array-like input.","solutions":["Only access traceback on concrete jax.Array instances, outside traced functions.","In shared helpers, guard with isinstance(x, jax.Array) (or check for a .traceback attribute on the aval) before touching it.","For error reporting under transforms, rely on JAX's own exception messages and jax.debug.print with ordered_effects instead.","If provenance is needed, capture the host-side traceback at call time in the non-traced caller."],"exampleFix":"// before\ndef audit(x):\n    logger.info(x.traceback)   # ConcretizationTypeError when x is a tracer\n@jax.jit\ndef f(x):\n    audit(x)\n    return x + 1\n\n// after\ndef audit(x):\n    if isinstance(x, jax.Array):\n        logger.info(x.traceback)\n@jax.jit\ndef f(x):\n    return x + 1","handlingStrategy":"type-guard","validationCode":"import jax\n\ndef get_traceback(x):\n    if isinstance(x, jax.core.Tracer):\n        return None\n    return getattr(x, 'traceback', None)","typeGuard":"import jax\nfrom jax.core import Tracer\n\ndef provenance_available(x) -> bool:\n    return isinstance(x, jax.Array) and not isinstance(x, Tracer)","tryCatchPattern":"from jax.errors import ConcretizationTypeError\ntry:\n    tb = x.traceback\nexcept ConcretizationTypeError:\n    tb = None  # traced value; capture host-side traceback instead","preventionTips":["Restrict provenance/audit capture to concrete arrays in non-traced code.","Guard generic logging helpers with isinstance(x, jax.Array).","Capture caller tracebacks at the host call site when you need provenance."],"tags":["jax","concretization","tracer","traceback","debugging"],"backgroundTag":"jax-tracer-concretization-error","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}