Repository navigation
fix(sentry): anonymous trampoline hop is '?' at runtime, not '' - #6554
Merged
Merged
Conversation
The fn === '' tolerance merged in #6547 was derived from Sentry's INGEST representation (anonymous frames display as function: null in the API) and never fires in production: @sentry/core stamps every parsed frame with `function || UNKNOWN_FUNCTION` — literally '?' — before beforeSend runs (stacktrace.js:115). WORLDMONITOR-Z6 proved it within hours of the merge: events from build_shas at and after #6547's own merge commit sailed through the gate, each blocked by a panel-storage frame whose runtime name is '?'. Admit '?' alongside '' (other SDK paths may omit the stamp), both bounded by the fetch-free-chunk invariant. New fixtures pin the RUNTIME shape — the '?'-named hop suppressed, '?' outside the allowlisted chunks and '?' without a collector frame both still surface. The solutions doc gains the durable lesson: the ingest event is not the SDK event; build beforeSend fixtures from the SDK's frame representation, never from API event data. Claude-Session: https://claude.ai/code/session_01AmZoei2dAPDptqMqX9Vrpx
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
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
The Y4 anonymous-trampoline fix merged in #6547 never fires in production. Within hours of the merge, the same class re-surfaced as WORLDMONITOR-Z6 — 4 events whose
build_shas are at and after #6547's own merge commit, so the failing bundles verifiably contained thefn === ''tolerance. The hole is a representation gap, not a fifth minifier rename:@sentry/corestamps every parsed frame withfunction || UNKNOWN_FUNCTION— literally'?'— beforebeforeSendruns (stacktrace.js:115in the installed SDK). Sentry ingest then displays'?'back as a null function, so the replay script and the test fixture — both built from API event data — tested''and passed while production tested'?'and failed. The''branch is dead code for this SDK version.One-line fix: the trampoline predicate admits
'?'alongside'', both under the unchanged load-bearing bounds (frames only inside the two fetch-free chunks whose modules provably issue no network call, collector frame still required). New fixtures pin the runtime shape: the'?'-named hop is suppressed; a'?'frame outside the allowlisted chunks and a'?'trampoline without a collector frame both still surface. The solutions doc from #6547 is corrected in place and gains the durable prevention rule: the ingest event is not the SDK event — buildbeforeSendfixtures from the SDK's frame representation, never from API event data.Validation: the new runtime-shape test was red before the predicate change and green after;
tests/sentry-beforesend.test.mjs259/259; mdx-lint 731/731;tscclean. Expect Z6/Y4 to take stragglers from pre-fix cached bundles for a while after deploy — events frombuild_shas ≥ this PR's merge are the real regression signal.https://claude.ai/code/session_01AmZoei2dAPDptqMqX9Vrpx