{"record":{"id":"fd5aef65653622f1","repo":"jax-ml/jax","slug":"must-wait-an-int32-value","errorCode":null,"errorMessage":"Must wait an int32 value.","messagePattern":"Must wait an int32 value\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"jax/_src/pallas/primitives.py","lineNumber":1154,"sourceCode":"    sem_or_view: A Ref (or view) representing a semaphore.\n    value: The target value that the semaphore should reach before unblocking.\n    decrement: Whether to decrement the value of the semaphore after\n      a successful wait.\n  \"\"\"\n  ref, transforms = _get_ref_and_transforms(sem_or_view)\n  value = jnp.asarray(value, dtype=jnp.int32)\n  args = [ref, transforms, value, decrement]\n  flat_args, args_tree = tree_util.tree_flatten(args)\n  semaphore_wait_p.bind(*flat_args, args_tree=args_tree)\n\n@semaphore_wait_p.def_effectful_abstract_eval\ndef _semaphore_wait_abstract_eval(*avals, args_tree):\n  sem_aval, sem_transforms_avals, value_aval, _ = tree_util.tree_unflatten(\n      args_tree, avals\n  )\n  check_sem_avals(sem_aval, sem_transforms_avals, \"wait\")\n  if value_aval.dtype != jnp.dtype(\"int32\"):\n    raise ValueError(\"Must wait an int32 value.\")\n  return [], {sem_effect}\n\ndef _semaphore_wait_pp_eqn(eqn: jax_core.JaxprEqn,\n                             context: jax_core.JaxprPpContext,\n                             settings: jax_core.JaxprPpSettings):\n  del settings\n  invars = eqn.invars\n  tree = eqn.params[\"args_tree\"]\n  (\n      sem,\n      sem_transforms,\n      value,\n      decrement,\n  ) = tree_util.tree_unflatten(tree, invars)\n  parts = [\n      pp.text(\"semaphore_wait\"),\n  ]\n  if decrement:","sourceCodeStart":1136,"sourceCodeEnd":1172,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/pallas/primitives.py#L1136-L1172","documentation":"semaphore_wait requires its wait value to be int32; any other dtype raises this ValueError from the abstract eval.","triggerScenarios":"Calling semaphore_wait(sem, value) where value is not int32 (e.g., float32 or int64).","commonSituations":"Passing computed thresholds in float; using Python ints promoted to int64 constants.","solutions":["Cast the value to int32: semaphore_wait(sem, value.astype(jnp.int32))","Construct the wait value as jnp.int32 from the beginning"],"exampleFix":"// before\nsemaphore_wait(sem, threshold)  # float32\n// after\nsemaphore_wait(sem, jnp.int32(threshold))","handlingStrategy":"validation","validationCode":"assert value_aval.dtype == jnp.dtype('int32'), \"semaphore_wait value must be int32\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Cast wait thresholds to jnp.int32","Build semaphore values in int32 from the start"],"tags":["pallas","semaphore","dtype-validation","jax"],"backgroundTag":"dtype-mismatch","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}