9
votes

My application debugs fine on the iOS simulator, and it runs fine when I build and deploy an ipa file to the device. However, if I try to debug on the device (iPhone 9.3.1 and iPad 9.3), the app immediately crashes on startup. I am using Visual Studio w/ Xamarin. The problem seems to be build/configuration/version related since it works fine on the simulator and IPA file versions, but I just cannot figure out the problem.

Visual Studio 2013 Update 5 Xamarin 4.0.3.214 Xamarin.iOS 9.6.1.8

Project configurations between builds that work and don't:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
    <DefineConstants>DEBUG</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
    <MtouchDebug>True</MtouchDebug>
    <MtouchSdkVersion>8.1</MtouchSdkVersion>
    <MtouchArch>i386</MtouchArch>
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs>
    <MtouchUseSGen>True</MtouchUseSGen>
    <MtouchUseRefCounting>True</MtouchUseRefCounting>
    <MtouchI18n>
    </MtouchI18n>
    <MtouchProfiling>True</MtouchProfiling>
    <MtouchLink>None</MtouchLink>
    <CodesignKey>iPhone Developer</CodesignKey>
    <CodesignProvision>
    </CodesignProvision>
    <CodesignExtraArgs>
    </CodesignExtraArgs>   
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\iPhone\Debug</OutputPath>
    <DefineConstants>DEBUG</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
    <CodesignKey>iPhone Developer</CodesignKey>
    <MtouchSdkVersion>8.1</MtouchSdkVersion>
    <MtouchArch>ARMv7</MtouchArch>
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs>
    <MtouchI18n>
    </MtouchI18n>
    <MtouchUseSGen>True</MtouchUseSGen>
    <MtouchDebug>True</MtouchDebug>
    <MtouchProfiling>True</MtouchProfiling>
    <SignAssembly>true</SignAssembly>
    <CodesignProvision>
    </CodesignProvision>
    <CodesignExtraArgs>
    </CodesignExtraArgs>   
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
    <DebugType>none</DebugType>
    <Optimize>True</Optimize>
    <OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>False</ConsolePause>
    <CodesignKey>xxx</CodesignKey>
    <BuildIpa>True</BuildIpa>
    <MtouchSdkVersion>8.1</MtouchSdkVersion>
    <MtouchArch>ARMv7</MtouchArch>
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs>
    <MtouchI18n>
    </MtouchI18n>
    <IpaPackageName>
    </IpaPackageName>
    <SignAssembly>true</SignAssembly>
    <CodesignProvision>xxx</CodesignProvision>
    <IpaMetadata>
    </IpaMetadata>
    <MtouchExtraArgs>
    </MtouchExtraArgs>
    <CodesignExtraArgs>
    </CodesignExtraArgs>   
</PropertyGroup>

Crash Report:

Incident Identifier: 3F2078C2-B276-4CCE-A5A0-43DCE3F4EB07
CrashReporter Key:   0ae3fc42ef86d1610013598af050cfcc24f778c2
Hardware Model:      iPhone7,2
Process:             RadResponder [3832]
Path:                /private/var/containers/Bundle/Application/30274A5D-271C-4E00-87B1-D3CE93033A8F/RadResponder.app/RadResponder
Identifier:          com.ChainbridgeTechnologies.RadResponder
Version:             45 (3.2.0)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2016-04-20 09:41:34.34 -0600
Launch Time:         2016-04-20 09:41:31.31 -0600
OS Version:          iOS 9.3.1 (13E238)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000084020400
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x20677c5c __pthread_kill + 8
1   libsystem_pthread.dylib         0x2071db47 pthread_kill + 63
2   libsystem_c.dylib               0x2060c0c5 abort + 109
3   RadResponder                    0x02e3a3e1 mono_handle_native_sigsegv (mini-exceptions.c:2186)
4   RadResponder                    0x02e405c9 mono_sigsegv_signal_handler (mini-runtime.c:2481)
5   libsystem_platform.dylib        0x2071985f _sigtramp + 43
6   RadResponder                    0x01f83fa0 System_Linq_Enumerable_ToArray_T_INT_System_Collections_Generic_IEnumerable_1_T_INT (Enumerable.cs:830)
7   RadResponder                    0x00de5d74 MvvmCross_Platform_iOS_Platform_MvxIosSystem_BuildVersion (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:27)
8   RadResponder                    0x00de5b38 MvvmCross_Platform_iOS_Platform_MvxIosSystem__ctor (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:22)
9   RadResponder                    0x01025628 MvvmCross_iOS_Platform_MvxIosSetup_CreateIosSystemProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:114)
10  RadResponder                    0x01025514 MvvmCross_iOS_Platform_MvxIosSetup_RegisterPlatformProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:109)
11  RadResponder                    0x0102538c MvvmCross_iOS_Platform_MvxIosSetup_InitializePlatformServices (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:100)
12  RadResponder                    0x0105c284 MvvmCross_Core_Platform_MvxSetup_InitializePrimary + 1532
13  RadResponder                    0x0105bc04 MvvmCross_Core_Platform_MvxSetup_Initialize + 120
14  RadResponder                    0x000bfaac RadResponder_Mobile_UI_iPhone_AppDelegate_FinishedLaunching_UIKit_UIApplication_Foundation_NSDictionary (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\AppDelegate.cs:54)
15  RadResponder                    0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256
16  RadResponder                    0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335)
17  RadResponder                    0x02e852a5 mono_runtime_invoke (object.c:2783)
18  RadResponder                    0x02dfcb6b native_to_managed_trampoline_6(objc_object*, objc_selector*, _MonoMethod**, objc_object*, objc_object*, char const*, char const*, char const*, char const*) (registrar.m:211)
19  RadResponder                    0x02dfc9bd -[AppDelegate application:didFinishLaunchingWithOptions:] (registrar.m:2962)
20  UIKit                           0x2502f8ff -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 395
21  UIKit                           0x252590bf -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3087
22  UIKit                           0x2525d079 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1589
23  UIKit                           0x25271649 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke3286 + 37
24  UIKit                           0x2525a59f -[UIApplication workspaceDidEndTransaction:] + 135
25  FrontBoardServices              0x220b7bf7 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 19
26  FrontBoardServices              0x220b7aa7 -[FBSSerialQueue _performNext] + 227
27  FrontBoardServices              0x220b7da5 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
28  CoreFoundation                  0x209aba67 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
29  CoreFoundation                  0x209ab657 __CFRunLoopDoSources0 + 455
30  CoreFoundation                  0x209a99bf __CFRunLoopRun + 807
31  CoreFoundation                  0x208f8289 CFRunLoopRunSpecific + 517
32  CoreFoundation                  0x208f807d CFRunLoopRunInMode + 109
33  UIKit                           0x25028dc7 -[UIApplication _run] + 527
34  UIKit                           0x250232c5 UIApplicationMain + 145
35  RadResponder                    0x00aa5218 wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 272
36  RadResponder                    0x00a0e58c UIKit_UIApplication_Main_string___intptr_intptr (UIApplication.cs:77)
37  RadResponder                    0x00a0e54c UIKit_UIApplication_Main_string___string_string (UIApplication.cs:61)
38  RadResponder                    0x000bf204 RadResponder_Mobile_UI_iPhone_Application_Main_string__ (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\Main.cs:12)
39  RadResponder                    0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256
40  RadResponder                    0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335)
41  RadResponder                    0x02e852a5 mono_runtime_invoke (object.c:2783)
42  RadResponder                    0x02e885d1 mono_runtime_exec_main (object.c:4038)
43  RadResponder                    0x02ef5778 xamarin_main (monotouch-main.m:404)
44  RadResponder                    0x02e15261 main (main.armv7.m:158)
45  libdyld.dylib                   0x205a4873 start + 3

Thread 1:
0   libsystem_kernel.dylib          0x20678864 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x2071ae19 _pthread_wqthread + 1037
2   libsystem_pthread.dylib         0x2071a9fc start_wqthread + 8

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x206792f8 kevent_qos + 24
1   libdispatch.dylib               0x2058b837 _dispatch_mgr_invoke + 255
2   libdispatch.dylib               0x2057d917 _dispatch_mgr_thread + 39

Thread 3:
0   libsystem_kernel.dylib          0x20678864 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x2071ae19 _pthread_wqthread + 1037
2   libsystem_pthread.dylib         0x2071a9fc start_wqthread + 8

Thread 4:
0   libsystem_kernel.dylib          0x20677da0 __recvfrom + 20
1   libsystem_c.dylib               0x205c7d5b recv + 23
2   RadResponder                    0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387)
3   RadResponder                    0x02ef3fb0 monotouch_process_connection(int) (monotouch-debug.m:790)
4   RadResponder                    0x02ef2f5c monotouch_connect_usb() (monotouch-debug.m:697)
5   RadResponder                    0x02ef25e8 monotouch_configure_debugging (monotouch-debug.m:333)
6   RadResponder                    0x02edc8bc -[CocoaThreadInitializer entryPoint:] (shared.m:124)
7   Foundation                      0x2121662d __NSThread__start__ + 1145
8   libsystem_pthread.dylib         0x2071cc7f _pthread_body + 139
9   libsystem_pthread.dylib         0x2071cbf3 _pthread_start + 111
10  libsystem_pthread.dylib         0x2071aa08 thread_start + 8

Thread 5:
0   libsystem_kernel.dylib          0x20677998 __psynch_cvwait + 24
1   libsystem_pthread.dylib         0x2071c1a5 _pthread_cond_wait + 537
2   libsystem_pthread.dylib         0x2071d0b9 pthread_cond_wait + 41
3   RadResponder                    0x02ebeec5 thread_func (sgen-thread-pool.c:118)
4   libsystem_pthread.dylib         0x2071cc7f _pthread_body + 139
5   libsystem_pthread.dylib         0x2071cbf3 _pthread_start + 111
6   libsystem_pthread.dylib         0x2071aa08 thread_start + 8

Thread 6:
0   libsystem_kernel.dylib          0x20677da0 __recvfrom + 20
1   libsystem_c.dylib               0x205c7d5b recv + 23
2   RadResponder                    0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387)
3   RadResponder                    0x02ef3ec8 sdb_recv(void*, int) (monotouch-debug.m:403)
4   RadResponder                    0x02e22a07 debugger_thread (debugger-agent.c:1515)
5   RadResponder                    0x02ed3927 inner_start_thread (mono-threads-posix.c:97)
6   libsystem_pthread.dylib         0x2071cc7f _pthread_body + 139
7   libsystem_pthread.dylib         0x2071cbf3 _pthread_start + 111
8   libsystem_pthread.dylib         0x2071aa08 thread_start + 8

Thread 7:
0   libsystem_kernel.dylib          0x206638f8 semaphore_wait_trap + 8
1   RadResponder                    0x02ed312b mono_sem_wait (mono-semaphore.c:109)
2   RadResponder                    0x02e644b7 finalizer_thread (gc.c:1096)
3   RadResponder                    0x02ea4d89 start_wrapper (threads.c:655)
4   RadResponder                    0x02ed3927 inner_start_thread (mono-threads-posix.c:97)
5   libsystem_pthread.dylib         0x2071cc7f _pthread_body + 139
6   libsystem_pthread.dylib         0x2071cbf3 _pthread_start + 111
7   libsystem_pthread.dylib         0x2071aa08 thread_start + 8

Thread 8:
0   libsystem_kernel.dylib          0x20678864 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x2071ae19 _pthread_wqthread + 1037
2   libsystem_pthread.dylib         0x2071a9fc start_wqthread + 8

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x00000000
    r4: 0x00000006    r5: 0x376cd000      r6: 0xa10bb850      r7: 0x08721358
    r8: 0x15bc32ac    r9: 0x376cd908     r10: 0x0457fe7f     r11: 0x15bc3200
    ip: 0x00000148    sp: 0x0872134c      lr: 0x2071db47      pc: 0x20677c5c
  cpsr: 0x00000010
3
Did you look into the linking of your app? See: developer.xamarin.com/guides/ios/advanced_topics/linkerMartijn00
Yes. I turned the linker off with the same result.Zach Green
Does anything in the iOS project's AppDelegate.FinishedLaunching possibly take longer on the device than the simulator, such that device's watchdog process might be killing the app?Mark Larter
Looking at the iOS crash report a bit closer, an invalid address access and the fact that execution appeared to be in MvvmCross code doing a ToArray, my first comment seems unhelpful.Mark Larter
you should try not to debug the background process.Akshay Kulkarni

3 Answers

1
votes

I am replying on the basis of native app , this can happen if you set Adhoc Provisional Profile to the Debug option in build settings of project. This means for debugging your code you need to set debugging provisional profile for 'Debug' not adhoc type provisional profile.

1
votes

This isn't a direct answer to your question, but looking at the MvvmCross source for MvxIosSystem.BuildVersion, line 27 does appear to perform the ToArray where app dies on the invalid address access:

private void BuildVersion()
{
    var version = UIDevice.CurrentDevice.SystemVersion;
    var parts = version.Split('.').Select(int.Parse).ToArray();
    this.Version = new MvxIosVersion(parts);
}

Could UIDevice.CurrentDevice.SystemVersion be returning something interestingly unexpected by the MvvmCross framework?

I.e. how would version.Split('.').Select(int.Parse).ToArray() cause this invalid access?

Perhaps you could use a similar line of code in your app before the MvvmCross startup occurs to get the version value and hopefully more clues to debug with.

I tried this in a small Xamarin.iOS project, right in Main.cs, but couldn't see anything that would cause the problem - version came back "9.3.1" and parts was an array int[3]:

public class Application
{
    // This is the main entry point of the application.
    static void Main (string[] args)
    {
        //Xamarin.Insights.Initialize (XamarinInsights.ApiKey);
        var version = UIDevice.CurrentDevice.SystemVersion;
        var parts = version.Split('.').Select(int.Parse).ToArray();

        // if you want to use a different Application Delegate class from "AppDelegate"
        // you can specify it here.
        UIApplication.Main (args, null, "AppDelegate");
    }
}

I also tried substituting some creative values for version instead of calling UIDevice.CurrentDevice.SystemVersion, but all I could generate were unhandled string format or null reference exceptions with a very different iOS crash log than what you posted.

I wonder if device reset might clear the problem, from this SO answer to a similar question.

0
votes
MtouchUseRefCounting

This may be required. Go to build options, advanced tab, and tick the box on the right. It should be ticked in debug mode/simulator. So tick it in debug/device too.