fix: fingerprint minidump crashes by crash site for Error Tracking - #20
Conversation
The note claimed the backend's zero-frame gate keeps these events out of issue grouping. It no longer does: an exception-less crash now reaches Error Tracking and groups by exception type and message. The behaviour here is unchanged and still right — with no exception stream nothing records which thread died, so there is no site to fingerprint, and building one from an arbitrary thread would invent a crash site the dump does not contain. Only the stated consequence was wrong, and it is the kind of mistake that outlives the reader who could catch it.
|
Reviewed — the approach and the implementation both hold up. Pushed one commit that corrects a comment; no behaviour change. Checked and correct
Verified end to end, since a fingerprint the backend never reads would be inert: the intake does store The one fix: the note said the backend's zero-frame gate keeps a site-less crash out of issue grouping. That stopped being true earlier today — such a crash now reaches Error Tracking and groups by exception type and message. The code was already doing the right thing; only the stated consequence was stale. Tests: 31 pass, typecheck clean. |
Summary
error.fingerprint, computed as{exceptionType}|{module basename}|{normalized module offset}from the first non-system frame of the crashed thread (e.g.SIGSEGV|MyApp|0x12ab3c).Application crashed, so both fingerprint grouping and similarity grouping collapse distinct crash sites together.error.fingerprintverbatim, grouping prefers an event-provided fingerprint, and similarity grouping is skipped when one is present (fc-rumlogic/issue/fingerprint.go,group.go).Details
errorfields and the batch transport serializes the event verbatim; only theRawRumErrorinline type needed the field added.[0.2.1]section, so the release workflow's notes extraction has something to find.Review
Code-review pass performed against
origin/publishbefore opening: no blocking findings.Verification
yarn vitest run src/domain/rum/error/CrashCollection.spec.ts— 31/31 pass (7 new: frame selection, system-frame skip, all-system fallback, no-fingerprint cases, offset-spelling equivalence)yarn test:unit— 696/696 passyarn typecheck— cleanyarn format— clean on changed filesNotes / Risks
yarn linthas 9 pre-existing errors in files untouched by this PR (OperationCollection.ts,playground/*,e2e/*); CI does not gate on lint.