** Description changed:
[ Impact ]
spirv-tools 2026.3~rc1-1 is stuck in Ubuntu stonking proposed-migration
because tighter checks in spirv-val break the upstream-testsuite autopkgtests
of spirv-llvm-translator-{17,18,19,20,22} across amd64 and amd64v3.
The validator changes in 2026.3 introduced 6 regressions / over-strict
rejections of valid SPIR-V constructs generated by the LLVM translator:
1. ValidateLifetime (validate_cfg.cpp:358): Only accepted OpTypePointer,
failing when SPV_KHR_untyped_pointers uses OpTypeUntypedPointerKHR.
2. CheckFPRoundingModeForKernels (validate_decorations.cpp:1833): Disallowed
FPRoundingMode on standard arithmetic ops (OpFAdd, OpFSub, OpFMul, OpFRem,
OpFMod) and integer conversions (OpSConvert, OpUConvert) in OpenCL kernels, and
rejected OpFDiv when RoundedDivideSqrtINTEL is absent even with Kernel
capability.
3. ValidateConstantOperand (validate_constants.cpp:58): Rejected
OpSpecConstantOp inside OpConstantComposite. In SPIR-V, global composite
initializers must use OpSpecConstantOp bitcasts because SPIR-V does not provide
OpConstantOp.
4. ValidatePtrCastToGeneric (validate_conversion.cpp:619): Strictly required
identical source and destination pointee types on OpSpecConstantOp
PtrCastToGeneric, breaking generic pointer casts in OpenCL global blocks.
5. NonSemantic.Shader.DebugInfo.200 validation (validate_extensions.cpp):
- Rejected DebugInfoNone as debug flag and lexical scope operand.
- Demanded 8th operand (Flags) when omitted in basic debug types.
- Rejected line_start == 0 in DebugLine (standard DWARF/LLVM for
compiler-generated code without line numbers) and rejected OpString sources.
6. InspectDebugLine (validation_state.cpp:2380): Crashed with
std::out_of_range when the debug line source was an OpString (operands size <=
3).
[ Fix ]
Apply upstream-style surgical relaxations in spirv-tools validator:
1. In ValidateLifetime, query pointer metadata via GetPointerTypeInfo()
instead of hardcoded OpTypePointer check, verifying storage class is Function.
2. In CheckFPRoundingModeForKernels, permit FPRoundingMode on arithmetic and
integer conversions in kernels, and allow OpFDiv under Capability::Kernel.
3. In ValidateConstantOperand, exempt OpSpecConstantOp operands within
OpConstantComposite.
4. In ValidatePtrCastToGeneric, allow pointee type mismatch when opcode is
OpSpecConstantOp.
5. In validate_extensions.cpp, accept DebugInfoNone for constants and scopes,
allow optional Flags, allow line_start == 0 and OpString sources in DebugLine.
6. In InspectDebugLine, add bounds checking on operands size before indexing
operand 4 and operand 3.
[ Test Plan ]
1. Stand reproduction on Ubuntu stonking:
Run upstream-testsuite of spirv-llvm-translator-20 with spirv-tools
2026.3~rc1-1:
9 tests fail (lifetime.ll, memmove.ll, constrained-arithmetic.ll,
convert_functions.ll, constant-vars.ll, globals.ll, global_block.cl,
DebugLineOnlyOnce.ll, DebugLinePriority.spt).
2. Install updated spirv-tools 2026.3~rc1-1ubuntu1.
3. Re-run translator test suite:
Total Discovered Tests: 940
Unsupported : 7 (0.74%)
Passed : 929 (98.83%)
Expectedly Failed: 4 (0.43%)
Failed : 0 (0.00%)
100% pass rate, 0 failures.
[ Where problems could occur ]
The changes relax validation checks to tolerate constructs emitted by
LLVM/OpenCL tools and add bounds checks to prevent crashes. A potential risk is
that malformed hand-written SPIR-V binaries might bypass some strictness
checks. However, all relaxations are scoped to OpenCL kernels, specialization
constant expressions, debug info extensions, and untyped pointer capabilities.
[ Other Info ]
- Target series: stonking (26.10 devel series). Resolving this unblocks
spirv-tools migration to stonking release.
- Debian BTS: Forwarded with patch as Bug #1149809
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1149809).
- Upstream: KhronosGroup/SPIRV-Tools. The relaxations restore backwards
compatibility with LLVM SPIR-V translator.
- Package build and debdiff generated cleanly against pristine
2026.3~rc1-1.dsc; patch applies with 0 fuzz and 0 rejects.
+ - PPA: https://launchpad.net/~steelf/+archive/ubuntu/ppa (built: spirv-tools
2026.3~rc1-1ubuntu1)
--- [ Original Report ]
spirv-tools 2026.3~rc1-1 is stuck in Ubuntu stonking proposed-migration
because it regresses the upstream-testsuite autopkgtest of every
spirv-llvm-translator it triggers on amd64 and amd64v3:
- spirv-llvm-translator-17 17.0.19-1
- spirv-llvm-translator-18 18.1.21-1
- spirv-llvm-translator-19 19.1.16-1
- spirv-llvm-translator-20 20.1.11-1
- spirv-llvm-translator-22 22.1.0-1ubuntu1
Each of these passes with spirv-tools 2026.1-1 (and in the migration-reference
runs) and fails 14-15/14-15 times with 2026.3~rc1-1. The translator versions
did not change.
The translator testsuite runs /usr/bin/spirv-val on llvm-spirv output, and the
new validator rejects modules the old one accepted, e.g.:
transcoding/global_block.cl (spirv-val --target-env spv1.1):
error: Expected input and Result Type to point to the same type:
SpecConstantOp
%12 = OpSpecConstantOp %_ptr_Generic_uchar PtrCastToGeneric
%__block_literal_global
llvm-intrinsics/constrained-arithmetic.ll:
error: FPRoundingMode decoration can be applied only to a conversion
instruction to or from a floating-point type.
%add = OpFAdd %float %a %a
Other failing tests include type-scavenger/globals.ll and
llvm-intrinsics/lifetime.ll.
Logs:
https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/s/spirv-llvm-translator-17/20260926_015234_d5e34@/log.gz
https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/s/spirv-llvm-translator-18/20260926_015035_c2863@/log.gz
https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/s/spirv-llvm-translator-19/20260926_015158_b1629@/log.gz
https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/s/spirv-llvm-translator-20/20260926_015111_cef04@/log.gz
https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/s/spirv-llvm-translator-22/20260926_015011_c5a21@/log.gz
(amd64v3 runs show the same failures.)
Needs a decision on whether the validator is over-strict (a SPIRV-Tools
regression to fix or relax) or whether llvm-spirv really emits invalid
SPIR-V (translator fixes, or updating the tests to match). Either way this has
to be resolved before spirv-tools can migrate to stonking.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2168911
Title:
spirv-tools 2026.3~rc1-1: stricter spirv-val breaks spirv-llvm-
translator-{17,18,19,20,22} autopkgtests on amd64/amd64v3
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/spirv-tools/+bug/2168911/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs