Repository navigation
Conversation
This branch has not been 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.
Follow-up to #126459.
Flamegraph attachments are best-effort enrichment and must not prevent a crash's native stacktraces from being symbolicated. Event stacktraces now finish first. Unexpected exceptions from attachment loading, validation, Symbolicator requests, merging, and persistence are reported without marking the event fatal. Missing attachment chunks and files are expected skips, counted without exception reporting. A shared-budget
SymbolicationTimeoutstops the remaining flamegraphs rather than repeatedly submitting work after the deadline.The existing 100,000-node budget is enforced before DRF validation and Symbolicator submission, and incrementally before allocating each inline node. Exceeding either guard discards the rewrite and preserves the original attachment. The node ceiling is an allocation-count budget, not a byte-accurate memory limit. The 10 MiB serialized-size check remains in place.
Skipped attachments emit
process.native.flamegraph.skippedwith boundedreasontags for size, schema, node/expansion limits, load/request/merge/save failures, and timeouts. Payload contents are not included in metric tags or logs. Both flamegraph-only routing and attachment processing run the cheap in-memory attachment scan before checkingorganizations:flamegraph-attachments. Events without flamegraph attachments avoid the flag lookup entirely, and flag-off organizations avoid a flamegraph-only native task hop. Native crash routing is preserved.Regression coverage runs through the symbolication task wrapper to verify that attachment timeouts, load/save errors, and unexpected processing failures leave the crash symbolicated without a fatal-processing marker. It also covers stopping later requests after a timeout, pre-validation rejection, routing with the flag on/off, expansion boundaries, original-payload preservation, and skip metrics. Attachment format, size/frame/node limits, and
_symbolication.status: "completed"semantics are unchanged. Failed/skipped attachments remain eligible for reprocessing.Closes getsentry/sentry-cocoa#9445