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
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.
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.
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.
User contributions licensed under CC BY-SA 3.0