intel-qpl: disable ThreadSanitizer in release build#17384
Merged
Conversation
Drops -DSANITIZE_THREADS=ON from the cmake invocation. Enabling ThreadSanitizer in a shipped build adds 2x-10x runtime overhead and 5x-20x memory overhead per the LLVM TSan documentation (https://clang.llvm.org/docs/ThreadSanitizer.html). It also breaks at load time in many container configurations: the TSan runtime re-execs the process with personality(ADDR_NO_RANDOMIZE) to disable ASLR (see ReExec()/ADDR_NO_RANDOMIZE in compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp in llvm/llvm-project), and the personality(2) syscall is blocked by Docker's default seccomp profile. Without ASLR disabled, TSan aborts with 'FATAL: ThreadSanitizer: unexpected memory mapping ...' (e.g. google/sanitizers#1716) when libqpl is loaded inside an unprivileged container. Mirrors upstream fix: https://src.fedoraproject.org/rpms/intel-qpl/c/7a433cf7338f7922f90b8819bcfd3b9fb9d4cb35 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
48043bb to
ef53551
Compare
christopherco
approved these changes
May 21, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR disables ThreadSanitizer in the shipped intel-qpl build by changing the CMake configure flag from -DSANITIZE_THREADS=ON to OFF, addressing major runtime/memory overhead and container load-time failures under Docker’s default seccomp profile.
Changes:
- Added a dedicated
intel-qplcomponent definition with an overlay to flip-DSANITIZE_THREADStoOFF. - Regenerated the rendered spec to reflect the new CMake flag (and updated rpmautospec release/changelog).
- Updated the
intel-qpllock fingerprint and removed the inline component entry fromcomponents.toml.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
specs/i/intel-qpl/intel-qpl.spec |
Rendered spec now configures -DSANITIZE_THREADS=OFF; release/changelog updated via rpmautospec. |
locks/intel-qpl.lock |
Updates input-fingerprint to match the new component configuration. |
base/comps/intel-qpl/intel-qpl.comp.toml |
New component overlay drives the spec change without forking. |
base/comps/components.toml |
Removes the inline intel-qpl entry now that it has a dedicated component file. |
| # https://src.fedoraproject.org/rpms/intel-qpl/c/7a433cf7338f7922f90b8819bcfd3b9fb9d4cb35 | ||
| [[components.intel-qpl.overlays]] | ||
| description = "Disable ThreadSanitizer in release build (perf overhead + breaks under Docker seccomp)." | ||
| type = "spec-search-replace" |
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.
Drops -DSANITIZE_THREADS=ON from the cmake invocation. Enabling ThreadSanitizer in a shipped build adds 2x-10x runtime overhead and 5x-20x memory overhead per the LLVM TSan documentation (https://clang.llvm.org/docs/ThreadSanitizer.html).
It also breaks at load time in many container configurations: the TSan runtime re-execs the process with personality(ADDR_NO_RANDOMIZE) to disable ASLR (see ReExec()/ADDR_NO_RANDOMIZE in compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp in llvm/llvm-project), and the personality(2) syscall is blocked by Docker's default seccomp profile. Without ASLR disabled, TSan aborts with 'FATAL: ThreadSanitizer: unexpected memory mapping ...' (e.g. google/sanitizers#1716) when libqpl is loaded inside an unprivileged container.
Mirrors upstream fix:
https://src.fedoraproject.org/rpms/intel-qpl/c/7a433cf7338f7922f90b8819bcfd3b9fb9d4cb35
Validation
intel-qplRPM locally usingazldeverofs-utilsfrom PMC.mkfs.erofs --helpand saw error + segfault:intel-qplRPM.mkfs.erofsand saw it worked as expected.