** 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.
+ - 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.
+
+ --- [ 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.
** Changed in: spirv-tools (Ubuntu)
Status: New => Confirmed
** Tags added: patch
--
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