getsentry / sentry-dart

Sentry SDK for Dart and Flutter
https://sentry.io/for/flutter/
MIT License
752 stars 234 forks source link

Partially minified and no source code for Flutter Web #590

Closed vixez closed 3 years ago

vixez commented 3 years ago

Platform:

IDE:

split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

Platform installed with:

Output of the command flutter doctor -v below:

A collapsible section with markdown

flutter doctor -v [✓] Flutter (Channel stable, 2.5.0, on macOS 11.5.2 20G95 darwin-x64, locale en-GB) • Flutter version 2.5.0 at /Users/glennruysschaert/development/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 4cc385b4b8 (9 days ago), 2021-09-07 23:01:49 -0700 • Engine revision f0826da7ef • Dart version 2.14.0 [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at /Users/glennruysschaert/Library/Android/sdk • Platform android-30, build-tools 30.0.2 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 12.5.1, Build version 12E507 • CocoaPods version 1.10.1 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2020.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165) [✓] VS Code (version 1.60.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.26.0 [✓] Connected device (2 available) • macOS (desktop) • macos • darwin-x64 • macOS 11.5.2 20G95 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 93.0.4577.82 • No issues found!

The version of the SDK (See pubspec.lock): 6.0.0


I have the following issue:

I am using sentry_dart_plugin to upload debug files to Sentry with the following settings:

sentry:
  upload_native_symbols: true
  upload_source_maps: true
  include_native_sources: true
  project: *redacted*
  org: *redacted*
  auth_token: *redacted*
  wait_for_processing: true
  log_level: trace # possible values: trace, debug, info, warn, error

When I trigger a test exception, it seems like the stack traces are still somewhat minified and are missing the source code. Example Sentry exception.

The build command for web is: flutter build web -t lib/main-customer_production_store.dart --release --source-maps

And then flutter packages pub run sentry_dart_plugin

There are 131 files uploaded for the release in Source Maps, and a lot of native files in Debug Files.

Screenshot 2021-09-17 at 10 14 09

But the results are quite incomplete. Am I missing something to get full stack traces without minified code, and included sources?

Screenshot 2021-09-17 at 10 13 31

Screenshot 2021-09-17 at 10 13 46

marandaneto commented 3 years ago

@vixez thanks for reporting.

the minified:a6v is a limitation of the flutter tooling, the uploaded source maps looks correct, we will investigate the issue, thanks

vixez commented 3 years ago

@marandaneto Alright, thank you

marandaneto commented 3 years ago

I've asked for help from our Web team that works closely with source maps, will let you know asap.

marandaneto commented 3 years ago

could it be related to https://github.com/flutter/flutter/issues/87734 ?

marandaneto commented 3 years ago

@vixez what's the chance that the Flutter tooling generated an invalid/incomplete source maps file?

See this note:

Originally the source map spec had a very verbose output of all the mappings and resulted in the sourcemap being about 10 times the size of the generated code. Version two reduced that by around 50% and version three reduced it again by another 50%, so for a 133kB file you end up with a ~300kB source map.

Screenshot 2021-09-20 at 13 51 25

the source map file should be way bigger, can you verify that? thanks

marandaneto commented 3 years ago

@vixez any news?

vixez commented 3 years ago

@marandaneto Hello, Sorry, I was on holidays, just got back today. I'll check asap.

vixez commented 3 years ago

@marandaneto Releasing our web version in profile mode is not an option, so I think we'll have to wait for a proper solution from the Flutter team to have better sourcemaps

marandaneto commented 3 years ago

@marandaneto Releasing our web version in profile mode is not an option, so I think we'll have to wait for a proper solution from the Flutter team to have better sourcemaps

indeed, but please have a look at https://github.com/getsentry/sentry-dart/issues/590#issuecomment-922859318 looks like the generated source maps are just invalid, have you tried to generate it again? maybe there was an issue during generation?

even if Flutter generates with a few missing things, the .map file should be always bigger, and Sentry is able to symbolicate most of the things anyway, See https://github.com/getsentry/sentry-dart/issues/417#issuecomment-897480519

vixez commented 3 years ago

@marandaneto Yes I tried the generation several times. First I tried it with a shell script after the build, and then switched to sentry_dart_plugin. The results seem the same.

The manual build and upload was done like this:

Part of the buildspec.yml:

      - echo Building flutter code
      - flutter pub get
      - sh web_flavors/append-version.sh
      - sh web_flavors/$FLAVOR_SCRIPT
      - export SENTRY_RELEASE="get_driven_customer@$(echo $(cat pubspec.yaml) | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.][0-9]*\).*/\1/p')"
      - flutter build web --dart-define=SENTRY_RELEASE=$SENTRY_RELEASE -t lib/$FLAVOR_ENTRYPOINT --release --source-maps

      - echo upload source maps to Sentry
      - sh web_flavors/sentry_upload_source_maps.sh

sentry_upload_source_maps.sh:

version=$(echo $(cat pubspec.yaml) | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.][0-9]*\).*/\1/p')

curl -sL https://sentry.io/get-cli/ | bash

ls $PWD/build/web/main.dart.js.map
echo uploading source maps for $version
export SENTRY_ORG=<redacted>
export SENTRY_PROJECT=<redacted>

# see https://github.com/getsentry/sentry-flutter/blob/d22e8376648dd9746304646036dbd24bb885e177/example/run.sh#L24-L29
sentry-cli releases new "<redacted>@$version"
sentry-cli releases files "<redacted>@$version" upload-sourcemaps . --ext dart
sentry-cli releases files "<redacted>@$version" upload-sourcemaps . --ext map --ext js
sentry-cli releases finalize "<redacted>@$version"
marandaneto commented 3 years ago

sentry_dart_plugin just calls sentry-cli automatically for you, so as long as you are passing the same params, should not be any different.

you are still missing the --dist param for upload-sourcemaps which should match what is detected automatically by the SDK or if you've set it manually, eg, in your example issue https://sentry.io/share/issue/7f6dd60c052542418c2bfadc2e389c65/ the dist is 98

similar issues https://github.com/getsentry/sentry-dart/issues/512 and https://github.com/getsentry/sentry-dart/issues/562

also the version should match, eg, in your example issue https://sentry.io/share/issue/7f6dd60c052542418c2bfadc2e389c65/ the release is @$version+98 with the dist included

vixez commented 3 years ago

@marandaneto

I built with: flutter build web -t lib/main-customer_production_store.dart --release --source-maps

I tried updating the script like so:

version=$(echo $(cat pubspec.yaml) | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.][0-9]*\).*/\1/p')

curl -sL https://sentry.io/get-cli/ | bash

ls $PWD/build/web/main.dart.js.map
dist=$(echo "$version" | awk -F "+" '{print $2}')
echo "uploading source maps for $version (dist: $dist)"

export SENTRY_ORG=<redacted>
export SENTRY_PROJECT=<redacted>

# see https://github.com/getsentry/sentry-flutter/blob/d22e8376648dd9746304646036dbd24bb885e177/example/run.sh#L24-L29
sentry-cli releases new "<redacted>@$version"
sentry-cli releases files "<redacted>@$version" upload-sourcemaps . --ext dart --dist $dist
sentry-cli releases files "<redacte>@$version" upload-sourcemaps . --ext map --ext js --dist $dist
sentry-cli releases finalize "<redacted>@$version"
Console output
This script will automatically install sentry-cli 1.68.0 for you. Installation path: /usr/local/bin/sentry-cli error: sentry-cli is already installed. /Users/glennruysschaert/Code/get-driven-flutter-app//build/web/main.dart.js.map uploading source maps for 3.0.0+104 (dist: 104) Created release @3.0.0+104. > Found 133 release files > Analyzing 133 sources > ~/lib/screens/settings/profile/cars/views/mobile/settings_profile_favorite_car> ~/lib/screens/settings/profile/cars/views/mobile/settings_profile_favorite_car> ~/lib/screens/rides/simulate_arrival_time/views/mobile/simulate_arrival_time_m> ~/lib/screens/rides/simulate_arrival_time/views/mobile/simulate_arrival_time_m> ~/lib/screens/wallet/add_credits/payment_method/add_credits_other_payment_meth> ~/lib/screens/wallet/add_credits/payment_method/add_credits_other_payment_meth> ~/lib/screens/wallet/add_credits/overview/views/mobile/add_credits_overview_mo> ~/lib/screens/wallet/add_credits/overview/views/mobile/add_credits_overview_mo> ~/lib/screens/rides/choose_driver/detail/views/mobile/choose_driver_detail_mob> ~/lib/screens/rides/choose_driver/detail/views/mobile/choose_driver_detail_mob> ~/lib/screens/wallet/add_credits/confirmed/views/mobile/add_credits_confirmed_> ~/lib/screens/wallet/add_credits/confirmed/views/mobile/add_credits_confirmed_> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_make_prim> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_make_prim> ~/lib/screens/wallet/payment_methods/overview/payment_methods_overview_screen.> ~/lib/screens/wallet/payment_methods/overview/payment_methods_overview_screen.> ~/lib/screens/wallet/invoices/overview/views/mobile/invoices_overview_mobile_v> ~/lib/screens/wallet/invoices/overview/views/mobile/invoices_overview_mobile_v> ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile_large.da> ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile_large.da> ~/lib/screens/wallet/add_credits/payment_method/views/mobile/add_credits_other> ~/lib/screens/wallet/add_credits/payment_method/views/mobile/add_credits_other> ~/lib/screens/wallet/payment_methods/add/payment_method_request_bank_transfer_> ~/lib/screens/wallet/payment_methods/add/payment_method_request_bank_transfer_> ~/lib/screens/wallet/discounts/views/mobile/discounts_overview_mobile_view.dar> ~/lib/screens/wallet/discounts/views/mobile/discounts_overview_mobile_view.dar> ~/lib/screens/referral/overview/views/mobile/referral_overview_mobile_view.dar> ~/lib/screens/referral/overview/views/mobile/referral_overview_mobile_view.dar> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_info_mobile_view.dar> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_info_mobile_view.dar> ~/lib/screens/wallet/payment_methods/add/payment_method_adyen_threeds_screen.d> ~/lib/screens/wallet/payment_methods/add/payment_method_adyen_threeds_screen.d> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/rides/choose_driver/confirmed/views/choose_driver_confirmed_mobi> ~/lib/screens/rides/choose_driver/confirmed/views/choose_driver_confirmed_mobi> ~/lib/screens/wallet/payment_methods/overview/views/mobile/payment_methods_ove> ~/lib/screens/wallet/payment_methods/overview/views/mobile/payment_methods_ove> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/payment_method_ente> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/payment_method_ente> ~/lib/screens/wallet/promotions/archive/views/mobile/promotions_archive_mobile> ~/lib/screens/wallet/promotions/archive/views/mobile/promotions_archive_mobile> ~/lib/screens/wallet/add_credits/summary/views/mobile/add_credits_summary_mobi> ~/lib/screens/wallet/add_credits/summary/views/mobile/add_credits_summary_mobi> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_request_b> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_request_b> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/mobile/paymen> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/mobile/paymen> ~/lib/screens/wallet/vouchers/overview/views/mobile/vouchers_overview_mobile_v> ~/lib/screens/wallet/vouchers/overview/views/mobile/vouchers_overview_mobile_v> ~/lib/screens/rides/choose_driver/confirmed/choose_driver_confirmed_screen.dar> ~/lib/screens/rides/choose_driver/confirmed/choose_driver_confirmed_screen.dar> ~/lib/screens/wallet/vouchers/archive/views/mobile/vouchers_archive_mobile_vie> ~/lib/screens/wallet/vouchers/archive/views/mobile/vouchers_archive_mobile_vie> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_adyen_thr> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_adyen_thr> ~/lib/screens/rides/choose_driver/overview/views/mobile/choose_driver_overview> ~/lib/screens/rides/choose_driver/overview/views/mobile/choose_driver_overview> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_cancel_confirm_mobil> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_cancel_confirm_mobil> ~/lib/screens/wallet/promotions/overview/views/mobile/promotions_overview_mobi> ~/lib/screens/wallet/promotions/overview/views/mobile/promotions_overview_mobi> ~/lib/screens/rides/create_ride/views/mobile/create_ride_confirmation_mobile_v> ~/lib/screens/rides/create_ride/views/mobile/create_ride_confirmation_mobile_v> ~/lib/screens/wallet/payment_methods/ui/list/bank_transfer_list_tile_large.dar> ~/lib/screens/wallet/payment_methods/ui/list/bank_transfer_list_tile_large.dar> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/web/payment_m> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/web/payment_m> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/vouchers/all/views/mobile/all_voucher_component_mobile_vi> ~/lib/screens/wallet/vouchers/all/views/mobile/all_voucher_component_mobile_vi> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_add_mobil> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_add_mobil> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/rides/exceptions/views/minimum_ride_duration_warning_mobile_view> ~/lib/screens/rides/exceptions/views/minimum_ride_duration_warning_mobile_view> ~/lib/screens/wallet/payment_methods/add/payment_method_make_primary_screen.da> ~/lib/screens/wallet/payment_methods/add/payment_method_make_primary_screen.da> ~/lib/screens/settings/profile/views/mobile/settings_profile_overview_mobile_v> ~/lib/screens/settings/profile/views/mobile/settings_profile_overview_mobile_v> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> Analyzing completed in 0.049s > Rewriting sources > ~/lib/screens/wallet/invoices/overview/views/mobile/invoices_overview_mobile_v> ~/lib/screens/wallet/invoices/overview/views/mobile/invoices_overview_mobile_v> ~/lib/screens/wallet/payment_methods/add/payment_method_adyen_threeds_screen.d> ~/lib/screens/wallet/payment_methods/add/payment_method_adyen_threeds_screen.d> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile_large.da> ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile_large.da> ~/lib/screens/settings/profile/cars/views/mobile/settings_profile_favorite_car> ~/lib/screens/settings/profile/cars/views/mobile/settings_profile_favorite_car> ~/lib/screens/wallet/add_credits/payment_method/views/mobile/add_credits_other> ~/lib/screens/wallet/add_credits/payment_method/views/mobile/add_credits_other> ~/lib/screens/wallet/add_credits/overview/views/mobile/add_credits_overview_mo> ~/lib/screens/wallet/add_credits/overview/views/mobile/add_credits_overview_mo> ~/lib/screens/wallet/payment_methods/add/payment_method_request_bank_transfer_> ~/lib/screens/wallet/payment_methods/add/payment_method_request_bank_transfer_> ~/lib/screens/rides/choose_driver/confirmed/choose_driver_confirmed_screen.dar> ~/lib/screens/rides/choose_driver/confirmed/choose_driver_confirmed_screen.dar> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_add_mobil> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_add_mobil> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/vouchers/archive/views/mobile/vouchers_archive_mobile_vie> ~/lib/screens/wallet/vouchers/archive/views/mobile/vouchers_archive_mobile_vie> ~/lib/screens/wallet/vouchers/overview/views/mobile/vouchers_overview_mobile_v> ~/lib/screens/wallet/vouchers/overview/views/mobile/vouchers_overview_mobile_v> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_info_mobile_view.dar> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_info_mobile_view.dar> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/mobile/paymen> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/mobile/paymen> ~/lib/screens/wallet/payment_methods/add/payment_method_make_primary_screen.da> ~/lib/screens/wallet/payment_methods/add/payment_method_make_primary_screen.da> ~/lib/screens/rides/choose_driver/confirmed/views/choose_driver_confirmed_mobi> ~/lib/screens/rides/choose_driver/confirmed/views/choose_driver_confirmed_mobi> ~/lib/screens/referral/overview/views/mobile/referral_overview_mobile_view.dar> ~/lib/screens/referral/overview/views/mobile/referral_overview_mobile_view.dar> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_request_b> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_request_b> ~/lib/screens/rides/exceptions/views/minimum_ride_duration_warning_mobile_view> ~/lib/screens/rides/exceptions/views/minimum_ride_duration_warning_mobile_view> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_make_prim> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_make_prim> ~/lib/screens/wallet/payment_methods/overview/views/mobile/payment_methods_ove> ~/lib/screens/wallet/payment_methods/overview/views/mobile/payment_methods_ove> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_cancel_confirm_mobil> ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_cancel_confirm_mobil> ~/lib/screens/rides/create_ride/views/mobile/create_ride_confirmation_mobile_v> ~/lib/screens/rides/create_ride/views/mobile/create_ride_confirmation_mobile_v> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/web/payment_m> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/web/payment_m> ~/lib/screens/wallet/promotions/overview/views/mobile/promotions_overview_mobi> ~/lib/screens/wallet/promotions/overview/views/mobile/promotions_overview_mobi> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card> ~/lib/screens/settings/profile/views/mobile/settings_profile_overview_mobile_v> ~/lib/screens/settings/profile/views/mobile/settings_profile_overview_mobile_v> ~/lib/screens/rides/simulate_arrival_time/views/mobile/simulate_arrival_time_m> ~/lib/screens/rides/simulate_arrival_time/views/mobile/simulate_arrival_time_m> ~/lib/screens/wallet/payment_methods/ui/list/bank_transfer_list_tile_large.dar> ~/lib/screens/wallet/payment_methods/ui/list/bank_transfer_list_tile_large.dar> ~/lib/screens/wallet/add_credits/summary/views/mobile/add_credits_summary_mobi> ~/lib/screens/wallet/add_credits/summary/views/mobile/add_credits_summary_mobi> ~/lib/screens/wallet/payment_methods/overview/payment_methods_overview_screen.> ~/lib/screens/wallet/payment_methods/overview/payment_methods_overview_screen.> ~/lib/screens/wallet/add_credits/payment_method/add_credits_other_payment_meth> ~/lib/screens/wallet/add_credits/payment_method/add_credits_other_payment_meth> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_> ~/lib/screens/rides/choose_driver/detail/views/mobile/choose_driver_detail_mob> ~/lib/screens/rides/choose_driver/detail/views/mobile/choose_driver_detail_mob> ~/lib/screens/wallet/promotions/archive/views/mobile/promotions_archive_mobile> ~/lib/screens/wallet/promotions/archive/views/mobile/promotions_archive_mobile> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_adyen_thr> ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_adyen_thr> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/payment_method_ente> ~/lib/screens/wallet/payment_methods/add/enter_card_screen/payment_method_ente> ~/lib/screens/wallet/add_credits/confirmed/views/mobile/add_credits_confirmed_> ~/lib/screens/wallet/add_credits/confirmed/views/mobile/add_credits_confirmed_> ~/lib/screens/wallet/vouchers/all/views/mobile/all_voucher_component_mobile_vi> ~/lib/screens/wallet/vouchers/all/views/mobile/all_voucher_component_mobile_vi> ~/lib/screens/rides/choose_driver/overview/views/mobile/choose_driver_overview> ~/lib/screens/rides/choose_driver/overview/views/mobile/choose_driver_overview> ~/lib/screens/wallet/discounts/views/mobile/discounts_overview_mobile_view.dar> ~/lib/screens/wallet/discounts/views/mobile/discounts_overview_mobile_view.dar> Rewriting completed in 0.007s > Adding source map references > Bundling files for upload... > Bundling completed in 0.025s > Optimizing completed in 0s > Uploading completed in 0.585s > Uploaded release files to Sentry > Processing completed in 0.233s > File upload complete (processing pending on server) Source Map Upload Report Scripts ~/lib/enums/create_ride/create_ride_state.dart ~/lib/flavors.dart ~/lib/generated_plugin_registrant.dart ~/lib/main-customer_acceptance_debug.dart ~/lib/main-customer_acceptance_enterprise.dart ~/lib/main-customer_production_debug.dart ~/lib/main-customer_production_enterprise.dart ~/lib/main-customer_production_store.dart ~/lib/main-customer_staging_debug.dart ~/lib/main-customer_staging_enterprise.dart ~/lib/main.dart ~/lib/screens/cars/cars_add_screen.dart ~/lib/screens/cars/views/mobile/cars_add_mobile_view.dart ~/lib/screens/dashboard/dashboard_screen.dart ~/lib/screens/dashboard/ui/customer_dashboard_all_onboarding_panels.dart ~/lib/screens/dashboard/ui/customer_dashboard_pending_rides_block.dart ~/lib/screens/dashboard/ui/customer_dashboard_today_rides_panel_block.dart ~/lib/screens/dashboard/ui/customer_dashboard_upcoming_rides_block.dart ~/lib/screens/dashboard/ui/customer_dashboard_upcoming_rides_block_tablet.dart ~/lib/screens/dashboard/ui/dashboard_scroll_panel.dart ~/lib/screens/dashboard/views/mobile/dashboard_mobile_view.dart ~/lib/screens/dashboard/views/tablet/dashboard_tablet_view.dart ~/lib/screens/referral/form/referral_form_screen.dart ~/lib/screens/referral/form/views/mobile/referral_form_screen_mobile_view.dart ~/lib/screens/referral/invites/referral_invites_screen.dart ~/lib/screens/referral/invites/views/mobile/referral_invites_mobile_view.dart ~/lib/screens/referral/overview/referral_overview_screen.dart ~/lib/screens/referral/overview/views/mobile/referral_overview_mobile_view.dart ~/lib/screens/registration/customer_register_screen.dart ~/lib/screens/registration/views/mobile/customer_register_mobile_view.dart ~/lib/screens/rides/choose_driver/confirmed/choose_driver_confirmed_screen.dart ~/lib/screens/rides/choose_driver/confirmed/views/choose_driver_confirmed_mobile_view.dart ~/lib/screens/rides/choose_driver/detail/choose_driver_detail_screen.dart ~/lib/screens/rides/choose_driver/detail/views/mobile/choose_driver_detail_mobile_view.dart ~/lib/screens/rides/choose_driver/overview/choose_driver_overview_screen.dart ~/lib/screens/rides/choose_driver/overview/views/mobile/choose_driver_overview_mobile_view.dart ~/lib/screens/rides/choose_driver/ui/candidate_card.dart ~/lib/screens/rides/choose_driver/ui/candidate_card_stack.dart ~/lib/screens/rides/create_ride/create_ride_confirmation_screen.dart ~/lib/screens/rides/create_ride/create_ride_screen.dart ~/lib/screens/rides/create_ride/ui/create_ride.dart ~/lib/screens/rides/create_ride/ui/create_ride_billing_details_missing.dart ~/lib/screens/rides/create_ride/ui/create_ride_email_not_verified.dart ~/lib/screens/rides/create_ride/ui/create_ride_no_credits.dart ~/lib/screens/rides/create_ride/ui/create_ride_no_payment_method.dart ~/lib/screens/rides/create_ride/ui/insurance_selector.dart ~/lib/screens/rides/create_ride/views/mobile/create_ride_confirmation_mobile_view.dart ~/lib/screens/rides/create_ride/views/mobile/create_ride_mobile_view.dart ~/lib/screens/rides/delete_ride/delete_ride_screen.dart ~/lib/screens/rides/delete_ride/views/mobile/delete_ride_mobile_view.dart ~/lib/screens/rides/details/ride_details_screen.dart ~/lib/screens/rides/details/ui/ride_insurance_tile.dart ~/lib/screens/rides/details/views/mobile/ride_details_mobile_view.dart ~/lib/screens/rides/exceptions/minimum_ride_duration_warning_screen.dart ~/lib/screens/rides/exceptions/views/minimum_ride_duration_warning_mobile_view.dart ~/lib/screens/rides/overview/rides_overview_screen.dart ~/lib/screens/rides/overview/views/mobile/rides_overview_mobile_view.dart ~/lib/screens/rides/ride_feedback/ride_feedback_screen.dart ~/lib/screens/rides/ride_feedback/views/mobile/ride_feedback_mobile_view.dart ~/lib/screens/rides/sign/sign_ride_force_stop_screen.dart ~/lib/screens/rides/sign/sign_ride_screen.dart ~/lib/screens/rides/sign/views/mobile/sign_ride_force_stop_mobile_view.dart ~/lib/screens/rides/sign/views/mobile/sign_rides_mobile_view.dart ~/lib/screens/rides/simulate_arrival_time/simulate_arrival_time_screen.dart ~/lib/screens/rides/simulate_arrival_time/views/mobile/simulate_arrival_time_mobile_view.dart ~/lib/screens/settings/profile/cars/settings_profile_favorite_cars_screen.dart ~/lib/screens/settings/profile/cars/views/mobile/settings_profile_favorite_cars_mobile_view.dart ~/lib/screens/settings/profile/settings_profile_overview_screen.dart ~/lib/screens/settings/profile/views/mobile/settings_profile_overview_mobile_view.dart ~/lib/screens/settings/settings_screen.dart ~/lib/screens/settings/views/mobile/settings_mobile_view.dart ~/lib/screens/wallet/add_credits/confirmed/add_credits_confirmed_screen.dart ~/lib/screens/wallet/add_credits/confirmed/views/mobile/add_credits_confirmed_mobile_view.dart ~/lib/screens/wallet/add_credits/overview/add_credits_overview_screen.dart ~/lib/screens/wallet/add_credits/overview/views/mobile/add_credits_overview_mobile_view.dart ~/lib/screens/wallet/add_credits/payment_method/add_credits_other_payment_method_screen.dart ~/lib/screens/wallet/add_credits/payment_method/views/mobile/add_credits_other_payment_method_mobile_view.dart ~/lib/screens/wallet/add_credits/summary/add_credits_summary_screen.dart ~/lib/screens/wallet/add_credits/summary/views/mobile/add_credits_summary_mobile_view.dart ~/lib/screens/wallet/add_credits/ui/list/credit_bundle_list_tile.dart ~/lib/screens/wallet/add_credits/ui/switch/auto_reload_switch.dart ~/lib/screens/wallet/auto_reload/auto_reload_cancel_confirm_screen.dart ~/lib/screens/wallet/auto_reload/auto_reload_info_screen.dart ~/lib/screens/wallet/auto_reload/auto_reload_screen.dart ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_cancel_confirm_mobile_view.dart ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_info_mobile_view.dart ~/lib/screens/wallet/auto_reload/views/mobile/auto_reload_mobile_view.dart ~/lib/screens/wallet/discounts/discounts_overview_screen.dart ~/lib/screens/wallet/discounts/views/mobile/discounts_overview_mobile_view.dart ~/lib/screens/wallet/invoices/overview/invoices_overview_screen.dart ~/lib/screens/wallet/invoices/overview/views/mobile/invoices_overview_mobile_view.dart ~/lib/screens/wallet/overview/views/mobile/wallet_overview_mobile_view.dart ~/lib/screens/wallet/overview/wallet_overview_screen.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/payment_method_enter_card_screen.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card_form.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card_mobile_form.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/ui/adyen_enter_card_web_form.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/mobile/payment_method_enter_card_mobile_view.dart ~/lib/screens/wallet/payment_methods/add/enter_card_screen/views/web/payment_method_enter_card_web_view.dart ~/lib/screens/wallet/payment_methods/add/payment_method_add_screen.dart ~/lib/screens/wallet/payment_methods/add/payment_method_adyen_threeds_screen.dart ~/lib/screens/wallet/payment_methods/add/payment_method_make_primary_screen.dart ~/lib/screens/wallet/payment_methods/add/payment_method_request_bank_transfer_screen.dart ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_add_mobile_view.dart ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_adyen_threeds_mobile_view.dart ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_make_primary_mobile_view.dart ~/lib/screens/wallet/payment_methods/add/views/mobile/payment_method_request_bank_transfer_mobile_view.dart ~/lib/screens/wallet/payment_methods/overview/payment_methods_overview_screen.dart ~/lib/screens/wallet/payment_methods/overview/views/mobile/payment_methods_overview_mobile_view.dart ~/lib/screens/wallet/payment_methods/ui/list/bank_transfer_list_tile_large.dart ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile.dart ~/lib/screens/wallet/payment_methods/ui/list/payment_method_list_tile_large.dart ~/lib/screens/wallet/promotions/archive/promotions_archive_screen.dart ~/lib/screens/wallet/promotions/archive/views/mobile/promotions_archive_mobile_view.dart ~/lib/screens/wallet/promotions/overview/promotions_overview_screen.dart ~/lib/screens/wallet/promotions/overview/views/mobile/promotions_overview_mobile_view.dart ~/lib/screens/wallet/transactions/overview/transactions_overview_screen.dart ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_component_mobile_view.dart ~/lib/screens/wallet/transactions/overview/views/mobile/transactions_overview_mobile_view.dart ~/lib/screens/wallet/vouchers/all/all_vouchers_screen.dart ~/lib/screens/wallet/vouchers/all/views/mobile/all_voucher_component_mobile_view.dart ~/lib/screens/wallet/vouchers/all/views/mobile/all_vouchers_mobile_view.dart ~/lib/screens/wallet/vouchers/archive/views/mobile/vouchers_archive_mobile_view.dart ~/lib/screens/wallet/vouchers/archive/vouchers_archive_screen.dart ~/lib/screens/wallet/vouchers/overview/views/mobile/vouchers_overview_mobile_view.dart ~/lib/screens/wallet/vouchers/overview/vouchers_overview_screen.dart ~/lib/utils/ride_util.dart ~/lib/utils/rides/create_ride_util.dart ~/lib/utils/setup.dart ~/lib/utils/setup/notifications/external_notification_action_handlers.dart ~/lib/utils/setup/notifications/onboarding_utils.dart ~/lib/utils/setup/routes/setup_routes.dart ~/test/widget_test.dart > Found 3 release files > Analyzing 3 sources > Analyzing completed in 0.323s > Rewriting sources > Rewriting completed in 0.269s > Adding source map references > Bundling files for upload... ~/build/web/main.dart.js > Bundling completed in 0.41s > Optimizing completed in 0.009s > Uploading completed in 4.727s > Uploaded release files to Sentry > Processing completed in 0.217s > File upload complete (processing pending on server) Source Map Upload Report Scripts ~/build/web/flutter_service_worker.js Minified Scripts ~/build/web/main.dart.js (sourcemap at main.dart.js.map) Source Maps ~/build/web/main.dart.js.map Finalized release @3.0.0+104.

With that it seems worse than the plugin, now everything seems minified. Example crash.

Screenshot 2021-09-27 at 15 10 14

marandaneto commented 3 years ago

@vixez you cannot use . for upload-sourcemaps dir. (js and map only).

see https://github.com/getsentry/sentry-dart-plugin/blob/main/lib/src/configuration.dart#L77-L80

you have to use build/web

when doing sentry-cli releases with <redacted>@$version, it should follow the pattern as stated before, eg <redacted>@$version+$dist, you have to pass the $dist and they should match

vixez commented 3 years ago

@marandaneto I replaced . with build/web, so the script is now:

version=$(echo $(cat pubspec.yaml) | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.][0-9]*\).*/\1/p')

curl -sL https://sentry.io/get-cli/ | bash

ls $PWD/build/web/main.dart.js.map
dist=$(echo "$version" | awk -F "+" '{print $2}')
echo "uploading source maps for $version (dist: $dist)"

export SENTRY_ORG=<redacted>
export SENTRY_PROJECT=<redacted>

# see https://github.com/getsentry/sentry-flutter/blob/d22e8376648dd9746304646036dbd24bb885e177/example/run.sh#L24-L29
sentry-cli releases new "<redacted>@$version"
sentry-cli releases files "<redacted>@$version" upload-sourcemaps "build/web" --ext dart --dist $dist
sentry-cli releases files "<redacted>@$version" upload-sourcemaps "build/web" --ext map --ext js --dist $dist
sentry-cli releases finalize "<redacted>@$version"
Console output
This script will automatically install sentry-cli 1.68.0 for you. Installation path: /usr/local/bin/sentry-cli error: sentry-cli is already installed. /Users/glennruysschaert/Code/get-driven-flutter-app/r/build/web/main.dart.js.map uploading source maps for 3.0.0+105 (dist: 105) Created release @3.0.0+105. > Found 0 release files > Rewriting sources > Rewriting completed in 0s > Adding source map references > Bundling files for upload... > Bundling completed in 0.003s > Optimizing completed in 0s > Uploading completed in 0.203s > Uploaded release files to Sentry > Processing completed in 0.163s > File upload complete (processing pending on server) Source Map Upload Report > Found 3 release files > Analyzing 3 sources > Analyzing completed in 0.341s > Rewriting sources > Rewriting completed in 0.28s > Adding source map references > Bundling files for upload... ~/main.dart.js.map > Bundling completed in 0.41s > Optimizing completed in 0.009s > Uploading completed in 7.266s > Uploaded release files to Sentry > Processing completed in 0.158s > File upload complete (processing pending on server) Source Map Upload Report Scripts ~/flutter_service_worker.js Minified Scripts ~/main.dart.js (sourcemap at main.dart.js.map) Source Maps ~/main.dart.js.map Finalized release @3.0.0+105.

$version already includes the dist. $dist is without the version.

This can be seen in the logging echo "uploading source maps for $version (dist: $dist)" results in: uploading source maps for 3.0.0+105 (dist: 105)

This results in a crash like this one.

The classes and so seem correct, however the line numbers are wrong. The fake crash should be at line 94, not 1111. But still seems to be minified (like the title of the crash)

marandaneto commented 3 years ago

@vixez as stated here -> https://github.com/getsentry/sentry-dart/issues/590#issuecomment-927882033

you cannot use . for upload-sourcemaps dir. (js and map only).

the command below should still use . for the dir path (ext dart only).

sentry-cli releases files "@$version" upload-sourcemaps . --ext dart --dist $dist

marandaneto commented 3 years ago

But still seems to be minified (like the title of the crash)

about that, I've answered on https://github.com/getsentry/sentry-dart/issues/590#issuecomment-921623234

the minified:a6v is a limitation of the flutter tooling

also under https://docs.sentry.io/platforms/flutter/troubleshooting/

Also, Issue's titles might be obfuscated as we rely on the runtimeType, but they may not be human-readable, See: Obfuscate Caveat

https://flutter.dev/docs/deployment/obfuscate#caveat

vixez commented 3 years ago

@marandaneto Okay, I changed the .

version=$(echo $(cat pubspec.yaml) | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.][0-9]*\).*/\1/p')

curl -sL https://sentry.io/get-cli/ | bash

ls $PWD/build/web/main.dart.js.map
dist=$(echo "$version" | awk -F "+" '{print $2}')
echo "uploading source maps for $version (dist: $dist)"

export SENTRY_ORG=<redacted>
export SENTRY_PROJECT=<redacted>

# see https://github.com/getsentry/sentry-flutter/blob/d22e8376648dd9746304646036dbd24bb885e177/example/run.sh#L24-L29
sentry-cli releases new "<redacted>@$version"
sentry-cli releases files "<redacted>@$version" upload-sourcemaps . --ext dart --dist $dist
sentry-cli releases files "<redacted>@$version" upload-sourcemaps "build/web" --ext map --ext js --dist $dist
sentry-cli releases finalize "<redacted>@$version"

Example crash

It seems I looked wrong at the line numbers, the crash does show at line 94, so that is great! ../../../lib/screens/dashboard/views/mobile/dashboard_mobile_view.dart in _BaseButtonState.build.<anonymous function> at line 94:25

Here it looks like there is also source code shown, is this possible, or is this as good as it will get for now?

marandaneto commented 3 years ago

@vixez there's source code, hover the stack frames, the 2nd one (2nd line) is clickable/expandable, and its line 94, so seems to be working, right?

vixez commented 3 years ago

Ah, you are right. I totally missed that. Thanks for all your help, I will close this issue.