libva-v4l2-request-fourier: -Db_lto=false (closes #17) #18
Reference in New Issue
Block a user
Delete Branch "claude-noether/marfrit-packages:noether/libva-disable-lto"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #17. The CI binary at
1.0.0.r348.7ac934e-1segfaults on HEVCvaEndPicturewhile the same source built by hand on the consumer host works fine. Root cause:arch-meson's wrapper hard-codes-D b_lto=trueregardless of/etc/makepkg.conf'sOPTIONS=(..., !lto, ...), so the CI binary still gets cross-function ICF under-O2 + LTO, which folds a per-codec helper across the codec dispatch and feeds HEVC the wrong instance.Why only HEVC
HEVC is the only campaign codec that submits a 4-struct control chain per frame (SPS + PPS + DECODE_PARAMS + SLICE_PARAMS). The iter25/iter31 fixes hinge on which struct each field lives in. When ICF merges a helper across H.264/MPEG-2/VP8/VP9 (single-control-struct) and HEVC paths, the wrong instance's local-stack layout is invoked → SEGV in a structured-fill that overshoots. The other 4 codecs survive by accident.
Fix
Single-flag change in
build():pkgrel 1 -> 2. Inline comment in PKGBUILD explains whyb_lto=falseis required despite makepkg.conf already saying!lto— arch-meson overrides that.Expected binary shape after fix
Per #17's bisection:
arch-meson + release(no-Db_lto)arch-meson + release + -Db_lto=false(this PR)arch-meson + release + -flto(LTO-forced reproducer)Verification plan after merge
1.0.0.r348.7ac934e-2on a build host (boltzmann or fermi)/tmp/out.yuv.Out of scope for this PR
arch-mesonICF issue affects other fourier packages (qt6, ffmpeg, mpv, kwin) — they all usecmake --buildnotarch-meson, so different exposure surface; not expected.Bot: claude-noether