Repository navigation
fix(ci): macOS/Windows build-matrix failures — NEON uint64-trunc, cpumask, Vulkan rows, pthread - #834
Merged
Merged
Conversation
lusoris
force-pushed
the
fix/build-matrix-macos-windows-fixes
branch
from
June 7, 2026 16:45
2a846a4 to
f63da3c
Compare
…mask, Vulkan rows, pthread Five root causes for the red libvmaf Build Matrix badge on macOS arm64 and Windows CI legs: 1. NEON uint64-truncation zero-skip (motion_v2_neon.c): neon_any_nonzero_s32 reinterpreted int32x4_t as uint64x2_t and then cast the OR'd result to uint32_t. On little-endian ARM, upper 32 bits of each uint64 lane are dropped by the cast: when int32[0]==0 and int32[1]!=0, the lane is nonzero as uint64 but zero as uint32_t, causing false-zero detection. On checkerboard input this skipped nearly all x-phase rows, producing motion=0.0 on macOS arm64. Fix: use vget_low/high_u32 + vorr_u32 + vget_lane_u32 to fold at uint32 width. 2. cpumask -1 rejected by parse_unsigned (ADR-1088): Python harness disable_avx emitted --cpumask -1; parse_unsigned now rejects negative strings. Updated both callsites in __init__.py to use 4294967295 (0xFFFFFFFF, UINT_MAX). Updated matching test. 3. Vulkan CI matrix rows referencing removed option (ADR-0726): Both Ubuntu Vulkan and macOS MoltenVK matrix rows passed -Denable_vulkan=enabled which is no longer a valid meson option. Removed both rows from libvmaf-build-matrix.yml. 4. picture_pool_cpp23_lib missing pthread_dependency on Windows: picture_pool_cpp23_lib and gpu_picture_pool_cpp23_lib lacked dependencies:[pthread_dependency] in core/src/meson.build. On MSVC the win32 pthread shim include path was never injected, causing 'pthread.h not found' on all Windows CUDA and SYCL legs. Added pthread_dependency to both static_library() targets. 5. test_run_preserves_user_env stale expectation: ProcessRunner unconditionally stamps LC_ALL=C and LANG=C; the test expected only the raw user env dict. Updated expectation to include the locale vars. Closes: T-NEON-ANY-NONZERO-UINT64-TRUNC-2026-06-07 Closes: T-CPUMASK-NEG-ONE-REJECTED-2026-06-07 Closes: T-PTHREAD-POOL-WINDOWS-MISSING-2026-06-07 Closes: T-CI-VULKAN-STALE-MATRIX-ROWS-2026-06-07 Closes: T-ENV-PRESERVE-LOCALE-INJECT-2026-06-07 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
force-pushed
the
fix/build-matrix-macos-windows-fixes
branch
from
June 7, 2026 16:48
f63da3c to
f1ba8f5
Compare
This was referenced Jun 7, 2026
lusoris
added a commit
that referenced
this pull request
Jun 8, 2026
…dconfig (#860) Two CI failures from PR #855 tip (765af26): 1. test_run_vmaf_runner_local_explainer_with_bootstrap_model asserted VMAF_LE_score at places=4 (5e-5 tolerance) with a pre-NEON-fix value. After PR #834 corrected the neon_any_nonzero_s32 uint64-truncation bug, macOS arm64 Apple libm produces 75.40974... vs Linux 75.40980... (~6e-5 delta). Recalibrate to 75.40974269371469 and relax to places=3 per the ADR-0418 pattern used by all other bootstrap assertions in the same file. 2. Dockerfile was missing RUN ldconfig after make install. The NVIDIA CUDA Ubuntu 24.04 base image omits /usr/local/lib/x86_64-linux-gnu from /etc/ld.so.conf; meson strips RPATH on install; without ldconfig the vmaf binary cannot find libvmaf.so.3 at runtime and exits silently, producing zero smoke-test stdout. Closes T-LOCAL-EXPLAINER-BOOTSTRAP-NEON-RECAL-2026-06-08 Closes T-DOCKERFILE-LDCONFIG-MISSING-2026-06-08 Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Five independent root causes for the red libvmaf Build Matrix badge on macOS arm64 and Windows CI legs, all fixed in this PR:
NEON
neon_any_nonzero_s32uint64-truncation zero-skip (motion_v2_neon.c): Reinterpretingint32x4_tasuint64x2_tthen casting the OR of two uint64 lanes touint32_tdrops the upper 32 bits of each lane. Whenint32[0]==0andint32[1]!=0, the row is incorrectly classified as all-zero and the x-phase convolution is skipped. On checkerboard input this producedmotion=0.0on every macOS arm64 runner. Fix: fold viavget_low/high_u32+vorr_u32+vget_lane_u32at uint32 width.--cpumask -1rejected byparse_unsigned(ADR-1088): Python harnessdisable_avxemitted--cpumask -1;parse_unsigned(PR fix(cli): parse_unsigned negative/overflow guards + --help in cli_parse.cpp (ADR-1088) #794) rejects strings starting with-. Updated both callsites incompat/python-vmaf/__init__.pyto emit4294967295(0xFFFFFFFF, UINT_MAX, identical semantic). Updated matching coverage test.Vulkan CI matrix rows referencing removed meson option (ADR-0726): Both
Build — Ubuntu Vulkan (T5-1b runtime)andBuild — macOS Vulkan via MoltenVK (advisory)rows passed-Denable_vulkan=enabled; meson rejected this withUnknown option: "enable_vulkan". Removed both rows; Vulkan was removed in ADR-0726.picture_pool_cpp23_libmissingpthread_dependencyon Windows: Bothpicture_pool_cpp23_libandgpu_picture_pool_cpp23_libincore/src/meson.buildlackeddependencies : [pthread_dependency]. On MSVC the win32 pthreads shim include path (core/src/compat/win32/) was never injected, producingfatal error C1083: Cannot open include file: 'pthread.h'on all Windows CUDA and SYCL legs.test_run_preserves_user_envstale expectation:ProcessRunnerunconditionally stampsLC_ALL=CandLANG=C; the test expected only the raw user env. Updated expectation to match actual semantics.Type
fix— bug fixbuild/ci— tooling / infraChecklist
make format && make lintis green locally.meson test -C build./cross-backend-diffand the worst ULP is ≤ 2..c/.cpp/.cu/.h/.hpp, it has the appropriate license header (seeCONTRIBUTING.md).!orBREAKING CHANGE:and the migration path is documented below.docs/adr/_index_fragments/<NNNN-slug>.mdand the slug is appended todocs/adr/_index_fragments/_order.txt— do not editdocs/adr/README.mddirectly.Bug-status hygiene (ADR-0165)
docs/state.mdupdated in this PR with rows in Recently closed section.Netflix golden-data gate (ADR-0024)
assertAlmostEqual(...)score in the Netflix golden Python tests.Cross-backend numerical results
no cross-backend diff needed: no scoring kernel changes; NEON zero-skip fix is correctness-only (was falsely returning 0.0 on checkerboard).
Deep-dive deliverables (ADR-0108)
AGENTS.mdinvariant note — no rebase-sensitive invariants introduced by this PR.changelog.d/fixed/build-matrix-macos-windows-fixes.md.docs/rebase-notes.mdupdated;core/src/meson.buildpicture_pool targets are rebase-sensitive.Reproducer
Known follow-ups
None. All 5 root causes for the macOS/Windows build-matrix red badge are fixed in this PR.
🤖 Generated with Claude Code