#16384·qiskit

Missing input validation on SynthesizeRZRotations, negative synthesis_error panics

Author: lmaltsisCreated Jun 6, 2026Updated Sep 20, 2026
Labelsdocumentationfault tolerance

Environment

What is happening?

python
$ python /tmp/bug.py

thread '<unnamed>' panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rsgridsynth-0.2.0/src/config.rs:118:14:
attempt to subtract with overflow
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Traceback (most recent call last):
  File "/tmp/bug.py", line 7, in <module>
    SynthesizeRZRotations(synthesis_error=-10, cache_error=0.5)(qc)
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/transpiler/basepasses.py", line 144, in __call__
    out = pm.run(circuit, property_set=property_set)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/transpiler/passmanager.py", line 456, in wrapper
    return meth(*meth_args, **meth_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/transpiler/passmanager.py", line 196, in run
    return super().run(
           ^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/passmanager/passmanager.py", line 238, in run
    _run_workflow(
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/passmanager/passmanager.py", line 313, in _run_workflow
    passmanager_ir, final_state = flow_controller.execute(
                                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/passmanager/base_tasks.py", line 215, in execute
    passmanager_ir, state = next_task.execute(
                            ^^^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/transpiler/basepasses.py", line 167, in execute
    new_dag, state = super().execute(
                     ^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/passmanager/base_tasks.py", line 97, in execute
    ret = self.run(passmanager_ir)
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/software/qiskit-venv/slot-a/src/qiskit/transpiler/passes/synthesis/synthesize_rz_rotations.py", line 91, in run
    new_dag = synthesize_rz_rotations(
              ^^^^^^^^^^^^^^^^^^^^^^^^
pyo3_runtime.PanicException: attempt to subtract with overflow

How can we reproduce the issue?

python
from qiskit import QuantumCircuit
from qiskit.transpiler.passes.synthesis import SynthesizeRZRotations

qc = QuantumCircuit(1)
qc.rz(0.1, 0)

SynthesizeRZRotations(synthesis_error=-10, cache_error=0.5)(qc)

Negative synthesis error of -9 and above will instead get a "root is complex" panic.

What should happen?

Input validation on negative synthesis error, this is invalid code.

Any suggestions?

No response