Skip to content

Compound exception types skip symbol map remap #3902

Description

@sentry-junior

When an obfuscated Flutter/Dart app uploads a dart symbol map and reports a compound exception.type (readable prefix + obfuscated class token), Sentry leaves the obfuscated token as-is. Issue titles stay partially obfuscated even though the map is present and the event is eligible for dart deobfuscation.

Common app pattern:

// e.g. BlocObserver / error wrapper
exception.type = 'Bloc ${bloc.runtimeType}';
// after --obfuscate → "Bloc aBc"

Observed

  • Symbol map uploaded and linked via debug_meta / debug id
  • Event uses sentry.dart.flutter and qualifies for dart deobfuscation
  • exception.type is a compound string like Bloc aBc
  • After processing, type remains Bloc aBc instead of Bloc CheckoutBloc (or whatever aBc maps to)

Why this happens

Dart symbol map remapping currently does an exact match on the full exception.type string (plus Instance of '…' value patterns). It does not split compound types and remap individual tokens.

Lookup key is the full string "Bloc aBc", which is not in the map (maps only have single identifiers like "aBc").

Related: #1565

Reproduction (shape)

  1. Build Flutter app with --obfuscate and upload the dart symbol map
  2. Capture an error whose exception.type is composed as "Bloc ${runtimeType}" (or any "Label $obfuscatedType")
  3. Confirm map is attached to the event debug id
  4. Observe issue title / exception type still contains the obfuscated token

Workarounds

  • Capture pure runtimeType as exception.type (no human-readable prefix in the type string)
  • Put the readable label (Bloc, feature area, etc.) in a tag / context field instead of baking it into exception.type

Possible directions (SDK)

  • Document the exact-match limitation and recommend pure runtime types for exception.type
  • If any first-party helper/integration composes prefixed types, prefer tags/context for the prefix
  • Consider SDK-side guidance or helpers so composed labels do not break symbol-map remapping

Requested by Gino Buenaflor via Junior.

--

View Junior Session in Sentry

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions