Missing input validation on SynthesizeRZRotations, negative synthesis_error panics
Author: lmaltsisCreated Jun 6, 2026Updated Sep 20, 2026
Labelsdocumentationfault tolerance
Environment
- Qiskit version: https://github.com/qiskit/qiskit/commit/49eac272078aca7126d212df3169fbf663868e86
- Python version: Python 3.12.3
- Operating system: Ubuntu 24.04.4 LTS
What is happening?
$ 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 overflowHow can we reproduce the issue?
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
Source: Qiskit/qiskit