/ / Trouver la cause de SIGSEGV dans l’application Xamarin.iOS - débogage, xamarin.ios, xamarin

Trouver la cause de SIGSEGV dans l'application Xamarin.iOS - débogage, xamarin.ios, xamarin

Je travaille sur ma première application réelle en utilisant Xamarin.IOS. La plupart du temps, elle fonctionne très bien, mais elle se bloque plusieurs fois par jour avec le stacktrace suivant:

mono-rt: Stacktrace:
mono-rt:   at <unknown> <0xffffffff>
mono-rt:   at (wrapper managed-to-native) MonoTouch.Foundation.NSObject.monotouch_release_managed_ref (intptr) <IL 0x00023, 0xffffffff>
mono-rt:   at MonoTouch.Foundation.NSObject.ReleaseManagedRef () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/Foundation/NSObject.cs:98
mono-rt:   at MonoTouch.Foundation.NSObject/NSObject_Disposer.Drain (MonoTouch.Foundation.NSObject) [0x00062] in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSObject2.cs:545
mono-rt:   at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>
mono-rt:   at <unknown> <0xffffffff>
mono-rt:   at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff>
mono-rt:   at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
mono-rt:   at Diet52App.Application.Main (string[]) [0x00008] in /Users/danielnordmark/Projects/Diet52App/Diet52App/Main.cs:16
mono-rt:   at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

mono-rt:
Native stacktrace:


mono-rt:
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

Je suppose que certains objets sont récupérés avant que j'essaye de les utiliser. Mais je me sens un peu perdu comment savoir quand et où cela se produit dans mon code.

Comment puis-je savoir où est le problème? Toute aide est très appréciée!

Réponses:

4 pour la réponse № 1

Le problème semblait être lié à mon UITableViewController, j'avais une classe de base et deux instances différentes. Un conflit entre ces deux problèmes a entraîné une erreur SIGSEGV.

J'ai réussi à suivre le problème grâce à cette réponse https://stackoverflow.com/a/6769885/248905

La seule modification que j'ai eu à faire était d'envelopper le code avec InvokeOnMainThread comme ceci,

Mettre à jour: J'ai mis à jour ma solution après avoir pris contact avec Rolf chez Xamarin. La solution correcte consiste à insérer le code dans ViewDidDissapear au lieu de Dispose.

public override void ViewDidDisappear (bool animated)
{
searchController.SearchResultsSource = null;
searchController.Delegate = null;
base.ViewDidDisappear (animated);
}