Skip to content

feat(native): Symbolicate flamegraph attachments - #126459

Open
philprime wants to merge 9 commits into
masterfrom
philprime/flamegraph/symbolication
Open

philprime wants to merge 9 commits into
masterfrom
philprime/flamegraph/symbolication

Conversation

@philprime

@philprime philprime commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Adds native symbolication for version-1 event.flamegraph attachments behind organizations:flamegraph-attachments, using the existing event symbolication pipeline and attachment cache/objectstore flow. Attachments can trigger processing even when the associated event has no native stacktrace, and symbolication uses the attachment's own debug images.

Following the view-hierarchy deobfuscation pattern, attachment handling is separate from Symbolicator request orchestration. Resolved inline frames expand into caller-to-callee chains while preserving captured addresses, addressing modes, sample counts, and unresolved data. Completed attachments are marked with _symbolication.status: "completed" and skipped on subsequent processing. Each successful attachment is checkpointed before the next request without rewriting previously processed payloads.

The draft format is defined in getsentry/sentry-docs#19774. Input is bounded to 10 MiB and symbolication to the first 2,500 frame entries. This PR does not add scrubbing, JVM/ProGuard remapping, JavaScript/source-map remapping, or Relay changes.

Regression coverage includes real Symbolicator ingestion with both debug-file storage backends, objectstore attachments, inline expansion, reprocessing, and interrupted multi-attachment processing.

Process version-1 flamegraphs through the existing native symbolication pipeline behind a feature flag. Preserve captured addresses and original tables, expand inline frames, and checkpoint attachment updates.

Share native frame helpers and cover ingestion, storage backends, validation, reprocessing, and interrupted multi-attachment processing.
@philprime philprime self-assigned this Oct 5, 2026
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Oct 5, 2026
Preserve event processing when attachments are invalid or unavailable. Handle deep trees iteratively, enforce the rewritten payload size limit, and preserve relative image references.

Reuse existing JSON and attachment helpers and add regression coverage.
Keep the existing frame helpers in processing.py and build the image mapping in one place.

Remove unused rerun snapshots while retaining completion tracking and attachment size checks.

Cover large payloads without retaining duplicate original tables.
Comment thread src/sentry/lang/native/flamegraphs.py
@philprime
philprime marked this pull request as ready for review October 15, 2026 12:58
@philprime
philprime requested review from a team as code owners October 15, 2026 12:58

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9249338. Configure here.

Comment thread src/sentry/lang/native/processing.py
Comment thread src/sentry/lang/native/processing.py

This branch has not been deployed

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

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant