Skip to content

Upstream change detected: dotnet/android .github/skills/read-assembly-store/src/AssemblyStore @ 8f7c4d4 #5604

Description

@github-actions

Upstream Change Detected

The code at dotnet/android/.github/skills/read-assembly-store/src/AssemblyStore has a new commit since our last review.

Latest commit 8f7c4d4
Path history View history

Our vendored copy lives in src/Sentry.Android.AssemblyReader/. We modified the upstream code significantly,
so a direct merge is unlikely to be appropriate — but the commit above may reveal logic
changes worth porting.

What to do

  1. Review the upstream commit and path history.
  2. If no action is needed, close this issue with a note explaining why.
  3. If changes should be ported, create a follow-up task and close this issue once the work is tracked.

Automatically opened by the Watch Upstream Changes workflow.

Activity

  1. linear-code commented on Sep 21, 2026

    @linear-code
  2. jamescrosswell commented on Sep 22, 2026

    @jamescrosswell
    Collaborator

    Reviewed. The commit is 8f7c4d4, "[CoreCLR] Remove assembly store decompression cache" (dotnet/android#12780). It affects us, and in our favour.

    Upstream remeasured the opt-in decompression cache and found it made startup worse (+162 ms TTID, +179 ms TTFD), so they removed it — and with it the content_id header field it needed, restoring assembly store format version 3 for both CoreCLR and MonoVM. Verified on dotnet/android main:

    • AssemblyStoreGenerator.cs emits ASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT = 0x80000003
    • StoreReader_V2.Classes.cs has no content_id; Header.NativeSize is a flat 5 * sizeof(uint) const
    • StoreReader_V2.cs no longer lists the _V4 | ABI versions, and has dropped ASSEMBLY_STORE_FORMAT_NUMBER_MASK

    main is the .NET 11 branch — there is no release/11.0.1xx, and eng/Versions.props carries AndroidPackVersion 37.2.0 with suffix rc.2. The revert (2026-09-15) predates rc.2, while version7 pins 11.0.100-rc.1 / workload 11.0.100-rc.1.26458.5 (2026-09-08), the last build that emitted v4. So v4 never shipped, and .NET 11 GA will emit v3.

    Nothing needs porting into the vendored reader — our v4 support is a superset that reads v3 correctly. What did come out of the review:

    Worth recording for the stack: #5577 becomes load-bearing rather than redundant. With v4 gone, the index entry size is the only thing distinguishing a CoreCLR store from a MonoVM one — CoreCLR still writes 32-bit CRC32 name hashes on every ABI, so a .NET 11 GA arm64 store is v3, 64-bit ABI, 9-byte index entries. The pre-#5577 reader picks the hash width off the ABI bit and would read 8 bytes where there are 4. #5575's Zstandard support is unaffected; the revert removed the decompression cache, not Zstd compression.

    Closing — the follow-up work is tracked in #5608.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .net codeTaskupstream-watchUpstream vendored code has changed — review required

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions