Cannot enable AppCenter.Crashes on Xamarin.iOS app

1.5k Views Asked by At

Trying to use the new AppCenter on an existing Xamarin.iOS application, i have some trouble with the AppCenter.Crashes API.

I follow the Get started section and add following code in my AppDelegate.cs :

using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;

// ...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    //...
    // App Center
    AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics), typeof(Crashes));

    return true;
}

I also installed corresponding NuGet packages (here is corresponding line in my packages.config)

<package id="Microsoft.AppCenter" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Analytics" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Crashes" version="1.5.0" targetFramework="xamarinios10" />

Note that If i disable the AppCenter.Crashes module :

AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics));

Everything is fine (and i can see Analytics in the App center back-end)

But with the AppCenter.Crashes module enable, my app crash with the following message in console :

11:24:53.521334 +0100   MyApp.iOS   [AppCenter] VERBOSE: +[MSAppDelegateForwarder addTraceBlock:]_block_invoke_2/101 Start buffering traces.
11:24:53.521381 +0100   MyApp.iOS   [AppCenter] DEBUG: +[MSAppDelegateForwarder load]_block_invoke/48 Application delegate forwarder is enabled. It may use swizzling.
11:24:53.521587 +0100   MyApp.iOS   [AppCenter] VERBOSE: +[MSAppDelegateForwarder flushTraceBuffer]/398 Stop buffering traces, flushed.
11:24:53.524550 +0100   MyApp.iOS   [AppCenterXamarin] DEBUG: +[MSWrapperLogger MSWrapperLog:tag:level:]/7 No named identifier found in appSecret; using as-is
11:24:53.528625 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/0.mscrasheslogbuffer.
11:24:53.529190 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/1.mscrasheslogbuffer.
11:24:53.529652 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/2.mscrasheslogbuffer.
11:24:53.529787 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/3.mscrasheslogbuffer.
11:24:53.547125 +0100   MyApp.iOS   [AppCenter] INFO: -[MSHttpSender networkStateChanged]/346 Internet connection is up.
11:24:53.549737 +0100   MyApp.iOS   [AppCenter] DEBUG: +[MSSessionContext sharedInstance]_block_invoke/31 5 session(s) in the history.
11:24:53.551565 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/70 Stored new session with id:(null) and timestamp: 2018-03-14 10:24:53 +0000.
11:24:53.551644 +0100   MyApp.iOS   [AppCenter] INFO: -[MSAppCenter configure:]/222 App Center SDK configured successfully.
11:24:53.551699 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSAppCenter start:withServices:]/234 Prepare to start services: MSAnalytics, MSCrashes
11:24:53.551865 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSAppCenter start:withServices:]/236 Start services MSCrashes, MSAnalytics
11:24:53.552616 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/588 EnableUncaughtExceptionHandler is set to YES
11:24:53.557629 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/639 Exception handler successfully initialized.
11:24:53.574825 +0100   MyApp.iOS   [AppCenterCrashes] INFO: -[MSCrashes applyEnabledState:]/357 Crashes service has been enabled.
11:24:53.578904 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes startWithChannelGroup:appSecret:]/401 Started crash service.
11:24:53.579845 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/70 Stored new session with id:36C20159-XXXX-XXXX-XXXX-1E137546055A and timestamp: 2018-03-14 10:24:53 +0000.
11:24:53.579893 +0100   MyApp.iOS   [AppCenterAnalytics] INFO: -[MSSessionTracker renewSessionId]/50 New session ID: 36C20159-XXXX-XXXX-XXXX-1E137546055A
11:24:53.579940 +0100   MyApp.iOS   CCMonitor created
11:24:53.584290 +0100   MyApp.iOS   [AppCenterAnalytics] INFO: -[MSAnalytics applyEnabledState:]/108 Analytics service has been enabled.
11:24:53.585392 +0100   MyApp.iOS   [AppCenterAnalytics] VERBOSE: -[MSAnalytics startWithChannelGroup:appSecret:]/73 Started Analytics service.
11:24:53.586034 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/448 Storing a log to Crashes Buffer: (sid: 36C20159-XXXX-XXXX-XXXX-1E137546055A, type: startSession)
11:24:53.586103 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/459 Found an empty buffer position.
11:24:53.586193 +0100   MyApp.iOS   [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:]_block_invoke/114 Saving log, type: startSession.
11:24:53.589925 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes deleteBufferedLog:withInternalId:]/520 Deleting a log from buffer with id ED4281FF-XXXX-XXXX-BB26-4DF6975F55EC
11:24:53.590438 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/448 Storing a log to Crashes Buffer: (sid: (null), type: startService)
11:24:53.590495 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/459 Found an empty buffer position.
11:24:53.590541 +0100   MyApp.iOS   [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:]_block_invoke/114 Saving log, type: startService.
11:24:53.592715 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes deleteBufferedLog:withInternalId:]/520 Deleting a log from buffer with id 5B6ECE02-XXXX-XXXX-86F8-10C663A6C411
11:24:53.603916 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] iPhone format detected
11:24:54.674171 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes startCrashProcessing]/695 Start delayed CrashManager processing
11:24:54.757002 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.770674 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1c00a6240>
11:24:54.770755 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.779793 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d42bd0a0>
11:24:54.779905 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.787919 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d44a2e80>
11:24:54.787956 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.794906 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d44a8820>
17:55:19.480297 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] api Sync success, need to write now ....  <- My app debug message, all is OK here
17:55:19.482483 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] 0 total objects received .... <- My app debug message, all is OK here
17:38:55.495458 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
17:38:55.495535 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
17:38:55.495594 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
11:25:01.376121 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/0.mscrasheslogbuffer
11:25:01.376170 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/1.mscrasheslogbuffer
11:25:01.376292 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/2.mscrasheslogbuffer

Last logs are repeated from 1.mscrasheslogbuffer to 59.mscrasheslogbuffer

Note that my app loading follow this steps :

  • Loading a first viewController with an image, an activity indicator whitch calls some Rest API
  • After API calls perform a segue to another ViewController with a NavBar

App seems crash between the two step : I can see the first screen and log indicate that the http/api stuff is OK.

Note that i have the same behavior on a simulator and a real device.

Any ideas ?

Edit 1 : Add more logs with AppCenter.LogLevel = LogLevel.Verbose;

1

There are 1 best solutions below

0
Batesias On

We had the same problem on our side too.

We resolved it by removing the nuget reference to Microsoft.AppCenter.

In other words, we only kept the nuget references to

  • Microsoft.AppCenter.Analytics
  • Microsoft.AppCenter.Crashes

We are using version 1.5.0 as well.