GithubHelp home page GithubHelp logo

bugsnag / bugsnag-flutter Goto Github PK

View Code? Open in Web Editor NEW
11.0 23.0 10.0 887 KB

BugSnag crash reporting for Flutter apps

Home Page: https://docs.bugsnag.com/platforms/flutter/

License: MIT License

Java 11.22% Objective-C 9.14% Dart 69.23% CMake 0.04% C 0.06% Ruby 1.40% Makefile 1.56% Gherkin 7.23% Shell 0.13%
bugsnag crash-reporting crash-reports error-monitoring flutter flutter-package notifier platforms bugs debug

bugsnag-flutter's People

Contributors

0hypercube avatar cawllec avatar jbankz avatar joshedney avatar kattrali avatar kstenerud avatar lemnik avatar luke-belton avatar nickdowell avatar richardelms avatar robert-smartbear avatar tomlongridge avatar twometresteve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bugsnag-flutter's Issues

Zone Mismatch

Starting from Flutter 3.10.0, there is a check for a "Zone Mismatch". Considering that bugsnag.start() creates a new zone, in cases where user wants to run WidgetsFlutterBinding.ensureInitialized(); there is a need to access the same zone. Otherwise, there will be zone mismatch error thrown.

Steps to reproduce

  1. Create a new Flutter application using version ^3.10.0.
  2. In the main method, add:
    dart```
    WidgetsFlutterBinding.ensureInitialized();
    bugsnag.start(...);
3. Run the app and observe the framework error.

### Environment

- Bugsnag version: "2.4.0"
- Flutter version: "3.10.5"
- Flutter-first app or native app with Flutter component(s): Flutter-first
- iOS/Android version: iOS 14
- Simulator/emulator or physical device: Simulator

<!-- Error messages, if any -->
<details><summary>Error messages:</summary>

════════ Exception caught by Flutter framework ═════════════════════════════════
The following assertion was thrown during runApp:
Zone mismatch.

The Flutter bindings were initialized in a different zone than is now being used. This will likely cause confusion and bugs as any zone-specific configuration will inconsistently use the configuration of the original binding initialization zone or this zone based on hard-to-predict factors such as which zone was active when a particular callback was set.
It is important to use the same zone when calling ensureInitialized on the binding as when calling runApp later.
To make this warning fatal, set BindingBase.debugZoneErrorsAreFatal to true before the bindings are initialized (i.e. as the first statement in void main() { }).
When the exception was thrown, this was the stack
#0 BindingBase.debugCheckZone.
binding.dart:497åc
#1 BindingBase.debugCheckZone
binding.dart:502
#2 runApp
binding.dart:1080
#3 main.
main.dart:120
#4 Bugsnag.attach.
client.dart:631
#5 Bugsnag._runWithErrorDetection.
client.dart:764
#10 Bugsnag._runWithErrorDetection
client.dart:763
#11 Bugsnag.attach
client.dart:629

(elided 4 frames from dart:async)
════════════════════════════════════════════════════════════════════════════════

</details>

Passing enums as metadata values breaks the reporting

Description

When there is an enum value among the metadata values, an error is thrown pointing to stringifying the metadata. This happens with both the .leaveBreadcrumb() and .notify() methods.

Steps to reproduce

I'm sending an OperationType object as a metadata value in my workflow. Underneath, the library struggles with stringifying it. It's a simple enum, but it breaks logging and error reporting!
I was able to reproduce this with any enum.
As a workaround, currently, I always convert my enum to a string before passing it in.

Environment

  • Bugsnag version: 2.4.0
  • Flutter version: 3.7.10
  • Flutter-first app or native app with Flutter component(s): Flutter-first
  • iOS/Android version: iOS 14
  • Simulator/emulator or physical device: Simulator

Code example:

enum TestEnum {
  value1,
  value2,
  value3,
}

    bugsnag.leaveBreadcrumb(
      'message',
      metadata: {'enum': TestEnum.value1},
      type: BugsnagBreadcrumbType.request,
    );

Error message:

flutter: error: Converting object to an encodable object failed: Instance of 'BugsnagBreadcrumb'
flutter: stackTrace: #0      _JsonStringifier.writeObject (dart:convert/json.dart:793:7)
#1      _JsonStringifier.writeMap (dart:convert/json.dart:874:7)
#2      _JsonStringifier.writeJsonValue (dart:convert/json.dart:829:21)
#3      _JsonStringifier.writeObject (dart:convert/json.dart:784:9)
#4      _JsonStringStringifier.printOn (dart:convert/json.dart:982:17)
#5      _JsonStringStringifier.stringify (dart:convert/json.dart:967:5)
#6      JsonEncoder.convert (dart:convert/json.dart:345:30)
#7      JsonCodec.encode (dart:convert/json.dart:231:45)
#8      JSONMessageCodec.encodeMessage
message_codecs.dart:103
#9      JSONMethodCodec.encodeMethodCall
message_codecs.dart:139
#10     MethodChannel._invokeMethod
platform_channel.dart:304
#11     MethodChannel.invokeMethod
platform_channel.dart:491
#12     ChannelClient.leaveBreadcrumb (package:bugsnag_flutter/src/c<…>

iTerm stops server reboots

If iTerm is left open, it stops the server from rebooting (as is scheduled).

This can be turned on manually in its preferences:
image

The preference (by looking at the plist before and after) seems to be:

	PromptOnQuit = :false;

(I'm assuming you know the right way of setting user prefs - I don't as yet!).

Desktop compatible ?

Is this plugin compatible with Windows , Linux and Mac ?

im getting this error

[ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method start on channel com.bugsnag/client)

Hide generic model names or prefix them

Description

When importing bugsnag_flutter/bugsnag_flutter.dart, internal Bugsnag models are exposed. App, User, Session are class names commonly used within implementations. The import causes a conflict within Dart because now there are two User classes exposed by different imports.

Describe the solution you'd like

  1. Prefix the models to the Bugsnag domain. BugsnagClient, BugsnagUser, BugsnagApp.
  2. Do not export these models in bugsnag_flutter.dart (my personal choice; as a maintainer, the less I expose the more I can refactor without worrying about implementers).

Describe alternatives you've considered

Generally I'll use show bugsnag to restrict my access to just the global singleton, which is 95 percent the only thing I need (save BreadcrumbType and BugsnagNavigatorObserver).

Navigator.pushAndRemoveUntil throws exception in Bugsnag

Describe the bug

When callingNavigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => const Screen()), (route) => false), Bugsnag throws an exception somewhere in a method channel.

Steps to reproduce

I was able to reproduce this with the default new Flutter project.

  1. Create new Flutter project
  2. Add at least one extra widget
  3. Navigate between them using Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => const Screen()), (route) => false)

Environment

  • Bugsnag version: 3.0.2
  • Flutter version: 3.0.2
  • Flutter-first app or native app with Flutter component(s): Flutter-first
  • iOS/Android version: Running on Android 12, build target 34
  • Simulator/emulator or physical device: Physical

Example Repo

https://codeberg.org/Ghoelian/bugsnag-navigate-issue

Error messages:
PlatformException(ClassCastException, org.json.JSONObject$1 cannot be cast to java.lang.String, [com.bugsnag.flutter.BugsnagFlutter.setContext(BugsnagFlutter.java:244), com.bugsnag.flutter.BugsnagFlutterPlugin$$ExternalSyntheticLambda6.invoke(Unknown Source:4), com.bugsnag.flutter.BugsnagFlutterPlugin.onMethodCall(BugsnagFlutterPlugin.java:66), io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267), io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292), io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319), io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12), android.os.Handler.handleCallback(Handler.java:938), android.os.Handler.dispatchMessage(Handler.java:99), android.os.Looper.loopOnce(Looper.java:201), android.os.Looper.loop(Looper.java:288), android.app.ActivityThread.main(ActivityThread.java:7891), java.lang.reflect.Method.invoke(Native Method), com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:568), com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1062)], null)
E/flutter (12718): #0      JSONMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:170:7)
E/flutter (12718): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334:18)
E/flutter (12718): <asynchronous suspension>
E/flutter (12718): 

Calling .first on an empty List causes a StateError

By far the most common error getting reported for my app is a StateError. This overwhelmingly happens on iOS, and very rarely happens on Android (at a ratio of approximately 250 errors on iOS to 1 on Android). This error gets reported so frequently that bugsnag has rate limited errors from my app. This has been happening for months across multiple versions of Flutter.

Here's an example of the error:


   StateError Bad state: No element
  
  #0 _GrowableList.first (dart:core-patch/growable_array.dart:343)
  #1 ChannelClient._createEvent (package:bugsnag_flutter/src/client.dart:526)
  #2 ChannelClient._notifyInternal (package:bugsnag_flutter/src/client.dart:479)
  #3 ChannelClient._onFlutterError (package:bugsnag_flutter/src/client.dart:466)
  #4 FlutterError.reportError (package:flutter/src/foundation/assertions.dart:1184)
  #5 ImageStreamCompleter.reportError (package:flutter/src/painting/image_stream.dart:733)
  #6 MultiFrameImageStreamCompleter. (package:flutter/src/painting/image_stream.dart:862)
  #7 _RootZone.runBinary (dart:async/zone.dart:1658)
  #8 _FutureListener.handleError (dart:async/future_impl.dart:162)
  #9 Future._propagateToListeners (dart:async/future_impl.dart:778)
  #10 Future._propagateToListeners (dart:async/future_impl.dart:799)
  #11 Future._completeError (dart:async/future_impl.dart:574)
  #12 _completeOnAsyncError (dart:async-patch/async_patch.dart:318)
  #13 _RootZone.runBinary (dart:async/zone.dart:1658)
  #14 _FutureListener.handleError (dart:async/future_impl.dart:162)
  #15 Future._propagateToListeners (dart:async/future_impl.dart:778)
  #16 Future._propagateToListeners (dart:async/future_impl.dart:799)
  #17 Future._completeError (dart:async/future_impl.dart:574)
  #18 Future.wait (dart:async/future.dart:507)
  #19 _RootZone.runBinary (dart:async/zone.dart:1658)
  #20 _FutureListener.handleError (dart:async/future_impl.dart:162)
  #21 Future._propagateToListeners (dart:async/future_impl.dart:778)
  #22 Future._propagateToListeners (dart:async/future_impl.dart:799)
  #23 Future._completeError (dart:async/future_impl.dart:574)
  #24 Future._chainForeignFuture (dart:async/future_impl.dart:519)
  #25 _microtaskLoop (dart:async/schedule_microtask.dart:40)
  #26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)

This error comes from the following line in the bugsnag_flutter library:

final buildID = error.stacktrace.first.codeIdentifier;

error.stacktrace happens to be empty, so calling .first will throw a StateError.

I forked the bugsnag_flutter repo and fixed that line. I don't know why error.stacktrace is empty, but I have an idea of the order of events that leads to the StateError.

Since releasing a new version of my app with the forked repo yesterday, it has always happened because of an HttpException. Nearly all of those HttpExceptions were from a request for an image via network either timing out (HttpException Operation timed out) or having its connection closed (HttpException Connection closed before full header was received). The HttpException then gets sent to bugsnag for error reporting, and then bugsnag throws a StateError because of the line I mentioned.

I'm going to make a pull request with the fix I made in my forked repo.

[Native-first Module] bugsnag.attach throws on a hot restart (minor problem)

Describe the bug

This is, to me, more of a developer experience problem. As a bug, I consider it a minor one.

During development phases, when a hot-restarts is triggered, bugsnag.attach throws the following exception:

IllegalStateException
bugsnag.attach() may not be called more than once

com.bugsnag.flutter.BugsnagFlutter.attach(BugsnagFlutter.java:57), 
com.bugsnag.flutter.BugsnagFlutterPlugin$$ExternalSyntheticLambda1.invoke(Unknown Source:4), 
com.bugsnag.flutter.BugsnagFlutterPlugin.onMethodCall(BugsnagFlutterPlugin.java:66), 
io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262), 
io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295), 
io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319), io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12), 
android.os.Handler.handleCallback(Handler.java:938), android.os.Handler.dispatchMessage(Handler.java:99), 
android.os.Looper.loopOnce(Looper.java:201), android.os.Looper.loop(Looper.java:288), 
android.app.ActivityThread.main(ActivityThread.java:7842), java.lang.reflect.Method.invoke(Native Method), 
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548), 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

Steps to reproduce

  1. Create a native-first flutter module
  2. Start an emulator/simulator, make sure that your module is up & running
  3. In devtools, trigger a hot-restart (code source change, or manual trigger) => bugsnag throws the exception above

Environment

  • Bugsnag version: 2.2.0
  • Flutter version: 3.3.4
  • Flutter-first app or native app with Flutter component(s): native-app w/ flutter
  • iOS/Android version: Android SDK 33, iOS 15.x
  • Simulator/emulator or physical device: both (but the bug only appears during debug sessions)

Workaround

Simple workaround, as we don't really need bugsnag during development stages: don't attach bugsnag during debug sessions.

if (kDebugMode) {
    runApp(MyApp());
  } else {
    bugsnag.attach(runApp: () => runApp(MyApp()));
  }

budgsnag.start

Describe the bug

Hi Team,

I've simply followed the initial steps to add Bugsnag on my Flutter app and it didn't enable my app to start.

iOS: Error Details are attached below
Android: No error is issued, but the app freezes on the launch screen

Steps to reproduce

as per steps on https://app.bugsnag.com/app/app/overview

  1. flutter pub add bugsnag_flutter
  2. add the following code
import 'package:bugsnag_flutter/bugsnag_flutter.dart';

void main() => bugsnag.start(
  apiKey: 'KEY',
  runApp: () => runApp(const MyFlutterApp()),
);

  1. flutter run

Environment

  • Bugsnag version:
  • Flutter version:
  • Flutter-first app or native app with Flutter component(s):
  • iOS/Android version:
  • Simulator/emulator or physical device:

Flutter Doctor

[✓] Flutter (Channel stable, 3.0.3, on macOS 12.4 21F79 darwin-arm, locale en-AU)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code (version 1.68.1)
[✓] Connected device (5 available)
[✓] HTTP Host Availability

Code

void main() async {

  WidgetsFlutterBinding.ensureInitialized();
  final settingsController = SettingsController(SettingsService());
  await settingsController.loadSettings();
  
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  

  return bugsnag.start(
    apiKey: Config.budgsnagKey,
    runApp: () => (MyApp(
      settingsController: settingsController,
      initialLink: initialLink
    ))
  );
}

Error

Error messages:
  Launching lib/main.dart on iPhone in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: XXX
CocoaPods' output:
↳
      Preparing
    Analyzing dependencies
    Inspecting targets to integrate
      Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)
    Finding Podfile changes
      A bugsnag_flutter
      - Flutter
      - amplitude_flutter
      - cloud_firestore
      - device_info
      - device_info_plus
      - firebase_analytics
      - firebase_auth
      - firebase_core
      - firebase_dynamic_links
      - firebase_messaging
      - flutter_appauth
      - flutter_facebook_auth
      - flutter_inappwebview
      - flutter_native_image
      - google_sign_in
      - image_picker_ios
      - mixpanel_flutter
      - package_info_plus
      - path_provider_ios
      - sign_in_with_apple
      - sqflite
      - url_launcher_ios
    Fetching external sources
    -> Fetching podspec for `Flutter` from `Flutter`
    -> Fetching podspec for `amplitude_flutter` from `.symlinks/plugins/amplitude_flutter/ios`
    -> Fetching podspec for `bugsnag_flutter` from `.symlinks/plugins/bugsnag_flutter/ios`
    -> Fetching podspec for `cloud_firestore` from `.symlinks/plugins/cloud_firestore/ios`
    cloud_firestore: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `device_info` from `.symlinks/plugins/device_info/ios`
    -> Fetching podspec for `device_info_plus` from `.symlinks/plugins/device_info_plus/ios`
    -> Fetching podspec for `firebase_analytics` from `.symlinks/plugins/firebase_analytics/ios`
    firebase_analytics: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `firebase_auth` from `.symlinks/plugins/firebase_auth/ios`
    firebase_auth: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `firebase_core` from `.symlinks/plugins/firebase_core/ios`
    firebase_core: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `firebase_dynamic_links` from `.symlinks/plugins/firebase_dynamic_links/ios`
    firebase_dynamic_links: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `firebase_messaging` from `.symlinks/plugins/firebase_messaging/ios`
    firebase_messaging: Using Firebase SDK version '8.15.0' defined in 'firebase_core'
    -> Fetching podspec for `flutter_appauth` from `.symlinks/plugins/flutter_appauth/ios`
    -> Fetching podspec for `flutter_facebook_auth` from `.symlinks/plugins/flutter_facebook_auth/ios`
    -> Fetching podspec for `flutter_inappwebview` from `.symlinks/plugins/flutter_inappwebview/ios`
    -> Fetching podspec for `flutter_native_image` from `.symlinks/plugins/flutter_native_image/ios`
    -> Fetching podspec for `google_sign_in` from `.symlinks/plugins/google_sign_in/ios`
    -> Fetching podspec for `image_picker_ios` from `.symlinks/plugins/image_picker_ios/ios`
    -> Fetching podspec for `mixpanel_flutter` from `.symlinks/plugins/mixpanel_flutter/ios`
    -> Fetching podspec for `package_info_plus` from `.symlinks/plugins/package_info_plus/ios`
    -> Fetching podspec for `path_provider_ios` from `.symlinks/plugins/path_provider_ios/ios`
    -> Fetching podspec for `sign_in_with_apple` from `.symlinks/plugins/sign_in_with_apple/ios`
    -> Fetching podspec for `sqflite` from `.symlinks/plugins/sqflite/ios`
    -> Fetching podspec for `url_launcher_ios` from `.symlinks/plugins/url_launcher_ios/ios`
    Resolving dependencies of `Podfile`
      CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update
      CDN: trunk Relative path: all_pods_versions_f_4_d.txt exists! Returning local because checking is only performed in repo update
      CDN: trunk Relative path: Specs/f/4/d/Amplitude/8.10.0/Amplitude.podspec.json exists! Returning local because checking is only performed in repo update
      CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update
    ――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    ### Command
    ```
    /usr/local/bin/pod install --verbose
    ```
    ### Report
    * What did you do?
    * What did you expect to happen?
    * What happened instead?
    ### Stack
    ```
       CocoaPods : 1.11.3
            Ruby : ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]
        RubyGems : 3.0.3.1
            Host : macOS 12.4 (21F79)
           Xcode : 13.4.1 (13F100)
             Git : git version 2.34.0
    Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
    Repositories : trunk - CDN - https://cdn.cocoapods.org/
    ```
    ### Plugins
    ```
    cocoapods-deintegrate : 1.0.5
    cocoapods-plugins     : 1.0.0
    cocoapods-search      : 1.0.1
    cocoapods-trunk       : 1.6.0
    cocoapods-try         : 1.2.0
    ```
    ### Podfile
    ```ruby
    # Uncomment this line to define a global platform for your project
    platform :ios, '11.0'
    # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
    ENV['COCOAPODS_DISABLE_STATS'] = 'true'
    project 'Runner', {
      'Debug' => :debug,
      'Profile' => :release,
      'Release' => :release,
    }
    def flutter_root
      generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
      unless File.exist?(generated_xcode_build_settings_path)
        raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
      end
      File.foreach(generated_xcode_build_settings_path) do |line|
        matches = line.match(/FLUTTER_ROOT\=(.*)/)
        return matches[1].strip if matches
      end
      raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
    end
    require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
    flutter_ios_podfile_setup
    target 'Runner' do
      use_frameworks!
      use_modular_headers!
      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
    end
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
      end
    end
    ```
    ### Error
    ```
    LoadError - dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')) - /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi.rb:5:in `rescue in <top (required)>'
    /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi.rb:2:in `<top (required)>'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon.rb:3:in `<top (required)>'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /Library/Ruby/Gems/2.6.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top (required)>'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:440:in `download_typhoeus_impl_async'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:372:in `download_and_save_with_retries_async'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:365:in `download_file_async'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:338:in `download_file'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:284:in `ensure_versions_file_loaded'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/cdn_source.rb:208:in `search'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/source/aggregate.rb:83:in `block in search'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/source/aggregate.rb:83:in `select'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.11.3/lib/cocoapods-core/source/aggregate.rb:83:in `search'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:416:in `create_set_from_sources'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:385:in `find_cached_set'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:360:in `specifications_for_dependency'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:165:in `search_for'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:274:in `block in sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:267:in `each'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:267:in `sort_by'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:267:in `sort_by!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:267:in `sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/delegates/specification_provider.rb:60:in `block in sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/delegates/specification_provider.rb:77:in `with_no_such_dependency_error_handling'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/delegates/specification_provider.rb:59:in `sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:754:in `push_state_for_requirements'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:744:in `require_nested_dependencies_for'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:727:in `activate_new_spec'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:684:in `attempt_to_activate'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:254:in `process_topmost_state'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:182:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.8.0/lib/molinillo/resolver.rb:43:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:94:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:1078:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:1076:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:416:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:241:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:240:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:161:in `install!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/command/install.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'
    ```
    ――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    [!] Oh no, an error occurred.
    Search for existing GitHub issues similar to yours:
    https://github.com/CocoaPods/CocoaPods/search?q=dlopen%28%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.15.5%2Flib%2Fffi_c.bundle%2C+0x0009%29%3A+tried%3A+%27%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.15.5%2Flib%2Fffi_c.bundle%27+%28mach-o+file%2C+but+is+an+incompatible+architecture+%28have+%27x86_64%27%2C+need+%27arm64e%27%29%29+-+%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.15.5%2Flib%2Fffi_c.bundle&type=Issues
    If none exists, create a ticket, with the template displayed above, on:
    https://github.com/CocoaPods/CocoaPods/issues/new
    Be sure to first read the contributing guide for details on how to properly submit a ticket:
    https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md
    Don't forget to anonymize any private data!
    Looking for related issues on cocoapods/cocoapods...
Error output from CocoaPods:
↳
    Searching for inspections failed: undefined method `map' for nil:NilClass
Exception: Error running pod install
Exited

zun zoned error

The Flutter bindings were initialized in a different zone than is now being used. This will likely cause confusion and bugs as any zone-specific configuration will inconsistently use the configuration of the original binding initialization zone or this zone based on hard-to-predict factors such as which zone was active when a particular callback was set.
It is important to use the same zone when calling ensureInitialized on the binding as when calling runApp later.
To make this warning fatal, set BindingBase.debugZoneErrorsAreFatal to true before the bindings are initialized (i.e. as the first statement in void main() { }).
When the exception was thrown, this was the stack
#0 BindingBase.debugCheckZone.
binding.dart:497
#1 BindingBase.debugCheckZone
binding.dart:502
#2 runApp
binding.dart:1080
#3 main.
main.dart:40

════════════════════════════════════════════════════════════════════════════════

Future main() => bugsnag.start(
apiKey: 'mykey',
runApp: () async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await configureDependencies();
// FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
runApp(const MyApp());
},
);

zone mismatched error for this code

dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException

Frequent errors causing the main thread to stall.

E  [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(NullPointerException, Attempt to invoke virtual method 'boolean com.bugsnag.android.InternalHooks.shouldDiscardError(org.json.JSONObject)' on a null object reference, [com.bugsnag.flutter.BugsnagFlutter.createEvent(BugsnagFlutter.java:365), com.bugsnag.flutter.BugsnagFlutterPlugin$$ExternalSyntheticLambda0.invoke(Unknown Source:4), com.bugsnag.flutter.BugsnagFlutterPlugin.onMethodCall(BugsnagFlutterPlugin.java:66), io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267), io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292), io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319), io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12), android.os.Handler.handleCallback(Handler.java:983), android.os.Handler.dispatchMessage(Handler.java:99), android.os.Looper.loopOnce(Looper.java:226), android.os.Looper.loop(Looper.java:328), android.app.ActivityThread.main(ActivityThread.java:9164), java.lang.reflect.Method.invoke(Native Method), com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586), com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)], null)
                                                                                                    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
                                                                                                    pid: 24754, tid: 16751, name 2.ui
                                                                                                    os: android arch: arm64 comp: yes sim: no
                                                                                                    build_id: '083986ec421ca368b3b58b5e9285a7a9'
                                                                                                    isolate_dso_base: 6fb6aee000, vm_dso_base: 6fb6aee000
                                                                                                    isolate_instructions: 6fb6eb4940, vm_instructions: 6fb6e9e000
                                                                                                        #00 abs 0000006fb77a3b67 virt 0000000000cb5b67 _kDartIsolateSnapshotInstructions+0x8ef227
                                                                                                        #01 abs 0000006fb792c6df virt 0000000000e3e6df _kDartIsolateSnapshotInstructions+0xa77d9f
                                                                                                    <asynchronous suspension>
                                                                                                        #02 abs 0000006fb782017f virt 0000000000d3217f _kDartIsolateSnapshotInstructions+0x96b83f
                                                                                                    <asynchronous suspension>
                                                                                                        #03 abs 0000006fb781f967 virt 0000000000d31967 _kDartIsolateSnapshotInstructions+0x96b027
                                                                                                    <asynchronous suspension>

Migrating from the community package

This official package is published under the community package name and has some different API access. If you're upgrading from the community package, please use the migration guide below:

  • bugsnag_flutter/bugsnag.dart is now bugsnag_flutter/bugsnag_flutter.dart
  • 2.0.1 uses a single API key instead of platform API keys. Use ternaries like Platform.isAndroid ? androidApiKey : iosApiKey when using bugsnag.start
  • .setUser accepts a named ID instead of an unnamed ID in the first position
  • BugsnagObserver is now BugsnagNavigatorObserver
  • Bugsnag.instance is now a global bugsnag
  • Bugsnag.instance.recordError is now bugsnag.notify
  • Bugsnag.instance.recordFlutterError should be translated as bugsnag.notify(error.exception, error.stack)
  • BugsnagBreadcrumb is now BreadcrumbType

Support http ^1.2.0

The package depends on http version 0.13.4. The latest http version at the moment is 1.2.0.
Version resolving is failing due to this. Had to downgrade my project's http version. The major http version was bumped 8 months ago. Please update it asap.

PlatformException(NullPointerException...........)

Describe the bug

I keep running into this error randomly with no true report as to what the cause may be.

Screenshot 2023-07-02 at 12 22 52

Steps to reproduce

There is no clear way to reproduce this error as it occurs randomly and when not expected.

Environment

  • Bugsnag version:=> bugsnag_flutter: ^2.4.0
  • Flutter version:=> Flutter 3.10.5 • channel stable

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.