Cherry-picks for 10.2.0 RC1 (2026-08-12) - #13539
Merged
Merged
Conversation
flz_maxcopy takes void* arguments but calls fastlz_memcopy (taking uint8_t* arguments) without a cast. I don't see a reason for flz_maxcopy to not take uint8_t* arguments; for arch-specific speedups these get cast to the appropriately-sized pointer. Resolves build issues on ppc64le architecture. (cherry picked from commit ad0b638)
The cache unit test harness starts the event and net processors but never stops them, so every test binary reaches exit() with ET_NET threads still running. Static destruction then frees globals out from under those threads: the records table in RecCore.cc is destroyed while a still-initializing event thread reads it through RecGetRecordInt(), and the ts::Metrics storage blob is released while NetHandler's activity loop increments a counter into it. Both are heap-use-after-frees, and under ASan the reporting thread races the exiting main thread. Usually the process dies first and the report is truncated to two lines with a zero exit status, so ctest reports a pass; occasionally the report deadlocks instead and the test hangs until ctest times it out after 1500 seconds. The short tests that never touch the cache lose this race most often, which is why CacheAggregateWriteBuffer and CacheStripe are the ones that fail. This addresses the deadlock at its source by giving the harness's Catch2 listener a testRunEnded hook that shuts the event system down and joins the event threads before the test binary returns from main. Once the threads are gone, static destruction has no concurrent reader to race, so neither use-after-free can be reported and the ASan reporting deadlock cannot arise. Co-authored-by: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit 0c18d46)
POSIX shared-memory objects on Linux retain the exact length passed to ftruncate(), but the cache shm gates accepted any size through the next page boundary. On 64 KiB-page systems, a foreign control layout could therefore be treated as compatible, causing cleanup and tooling paths to walk an untrusted stripe table and leave segments behind. This patch requires exact shared-memory object sizes outside macOS while preserving macOS's page-rounded allowance. It keeps the foreign-layout test at its original size and directly covers the platform-specific sizing contract. Fixes: apache#13534 (cherry picked from commit f0668e1)
Reloading remap.config becomes slow when it contains many mappings that reference the same regex_remap rule files. Since the PCRE2 conversion, every plugin instance JIT-compiles an independent copy, making reload time scale with instances rather than unique rule sets. This patch caches immutable compiled rule sets by resolved filename and exact source content. It keeps match contexts and profiling counters per instance and uses weak ownership so obsolete reload generations are released, preserving JIT request performance without redundant reload work. (cherry picked from commit f869b9c)
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.
Cherry-picks for the 10.2.0 RC1, covering the PRs at "For v10.2.0" in the ATS v10.2.x project — the fixes and feedback that came out of rc0 testing.
All picked with
git cherry-pick -xin master merge order. Every pick applied cleanly with no conflicts, and each commit's diffstat matches its master commit exactly.flz_maxcopyto avoid cast errorTwo of these are follow-ups to work already on this branch, so ordering relative to the earlier rounds matters more than ordering among themselves (no files overlap within this batch):
cache_shmheaders,CacheShm.ccand its unit test — no on-disk cache format — so there is no cache-compatibility consideration for upgrades.remap.configreload time scales with mapping count rather than unique rule sets.One thing worth noting about the #13536 pick. This branch carries a local adaptation to
include/shared/cache_shm/Layout.h: thestorage_signaturecomment saysstorage.configrather than master'sstorage.yaml, because that is the file this release actually reads. #13536 also editsLayout.h, but in a different region (the control-segment size helper around line 87 versus the comment at line 70), so the pick applied without touching the adaptation. Verified afterward that nostorage.yamlreference has crept back intoinclude/,src/,doc/ortests/.Verified before pushing: every
Disk.*attribute andTest.*helper used by the new and modified tests exists on this branch —Test.AddConfigReload(via #13502) andTest.AddAwaitFileContainsTestRunin particular — and no picked test reaches for a master-only config idiom.Local build is clean and
ctestis 167/167.cmake --build ... --target formatmakes no changes.Draft so the full CI matrix runs against the picked set before the release branch moves; it will be landed by fast-forward.