2
votes

I get a SIGABRT / ran out of trampolines error when running my MonoTouch app on a native device (iPad).

This happens pretty early in my app - I'm constructing a section using MonoTouch.Dialog.

        ItemTypeRadio = new RootElement ("Type", new RadioGroup (0))
        {
            new Section ()
            {
                from it in App.ViewModel.ItemTypes
                    select (Element) new RadioElement (it.Name)
            }
        };

Is there a compiler setting for increasing the number of trampolines?

How do I profile this and find out why my app is running out?

Ran out of trampolines of type 2 in '/private/var/mobile/Applications/9A5EE6EB-CAB8-404E-AF2F-E6571C1AC164/iphone.app/mscorlib.dll' (128)

Stacktrace:

at System.Linq.Enumerable/c__Iterator1D2.MoveNext () <0x000a7> at MonoTouch.Dialog.Section.AddAll (System.Collections.Generic.IEnumerable1) [0x00020] in /Developer/MonoTouch/Source/MonoTouch.Dialog/MonoTouch.Dialog/Elements.cs:2006 at MonoTouch.Dialog.Section.Add (System.Collections.Generic.IEnumerable`1) [0x00000] in /Developer/MonoTouch/Source/MonoTouch.Dialog/MonoTouch.Dialog/Elements.cs:2019 at BuiltSteady.Zaplify.Devices.IPhone.AddPage.ViewDidAppear (bool) [0x000d6] in /Users/ogazitt/zaplify/source/devices/ios/iphone/AddPage.cs:65 at (wrapper runtime-invoke) object.runtime_invoke_dynamic (intptr,intptr,intptr,intptr) <0xffffffff> at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 at BuiltSteady.Zaplify.Devices.IPhone.Application.Main (string[]) [0x00000] in /Users/ogazitt/zaplify/source/devices/ios/iphone/Main.cs:16 at (wrapper runtime-invoke) object.runtime_invoke_dynamic (intptr,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

0 zaplifyiphone 0x00ab0334 mono_handle_native_sigsegv + 280 1 zaplifyiphone
0x00ad3088 sigabrt_signal_handler + 180 2 libsystem_c.dylib
0x34f80539 _sigtramp + 48 3 libsystem_c.dylib
0x34f75f5b pthread_kill + 54 4 libsystem_c.dylib
0x34f6efeb abort + 94 5 zaplifyiphone
0x00b8c138 monoeg_g_logv + 152 6 zaplifyiphone
0x00b8c1a8 monoeg_g_log + 32 7 zaplifyiphone
0x00aa2454 get_numerous_trampoline + 152 8 zaplifyiphone
0x00aa2898 mono_aot_get_imt_thunk + 56 9 zaplifyiphone
0x00b459b4 initialize_imt_slot + 112 10 zaplifyiphone
0x00b46d9c build_imt_slots + 1124 11 zaplifyiphone
0x00b46f04 mono_vtable_build_imt_slot + 120 12 zaplifyiphone
0x00ab3024 mono_convert_imt_slot_to_vtable_slot + 292 13 zaplifyiphone 0x00ab329c common_call_trampoline + 284 14 zaplifyiphone 0x00ab17a8 mono_vcall_trampoline + 228 15 zaplifyiphone
0x009addb0 generic_trampoline_vcall + 136 16 zaplifyiphone
0x00011ee0 MonoTouch_Dialog_Section_AddAll_System_Collections_Generic_IEnumerable_1_MonoTouch_Dialog_Element + 188 17 zaplifyiphone 0x00011f68 MonoTouch_Dialog_Section_Add_System_Collections_Generic_IEnumerable_1_MonoTouch_Dialog_Element + 36 18 zaplifyiphone 0x00293f0c BuiltSteady_Zaplify_Devices_IPhone_AddPage_ViewDidAppear_bool + 2068 19 zaplifyiphone 0x00968774 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 200 20 zaplifyiphone 0x00a9c980 mono_jit_runtime_invoke + 1644 21 zaplifyiphone
0x00b44e00 mono_runtime_invoke + 128 22 zaplifyiphone
0x00ba1518 monotouch_trampoline + 3228 23 UIKit
0x351ab6b5 -[UIViewController _setViewAppearState:isAnimating:] + 144 24 UIKit 0x35205269 -[UITabBarController viewDidAppear:] + 100 25 UIKit 0x351ab6b5 -[UIViewController _setViewAppearState:isAnimating:] + 144 26 UIKit 0x351d9115 -[UIViewController _executeAfterAppearanceBlock] + 56 27 UIKit 0x35177e3f _afterCACommitHandler + 174 28 CoreFoundation
0x340d0b4b CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 18 29 CoreFoundation 0x340ced87 CFRunLoopDoObservers + 258 30 CoreFoundation 0x340cf0e1 __CFRunLoopRun + 760 31 CoreFoundation 0x340524dd CFRunLoopRunSpecific + 300 32 CoreFoundation
0x340523a5 CFRunLoopRunInMode + 104 33 GraphicsServices
0x35c92fcd GSEventRunModal + 156 34 UIKit
0x35197743 UIApplicationMain + 1090 35 zaplifyiphone
0x004d4ba4 wrapper_managed_to_native_MonoTouch_UIKit_UIApplication_UIApplicationMain_int_string
_intptr_intptr + 240 36 zaplifyiphone 0x00277900 BuiltSteady_Zaplify_Devices_IPhone_Application_Main_string__ + 152 37 zaplifyiphone 0x00968774 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 200 38 zaplifyiphone 0x00a9c980 mono_jit_runtime_invoke + 1644 39 zaplifyiphone
0x00b44e00 mono_runtime_invoke + 128 40 zaplifyiphone
0x00b490ac mono_runtime_exec_main + 436 41 zaplifyiphone
0x00b4dd20 mono_runtime_run_main + 756 42 zaplifyiphone
0x00aa0d08 mono_jit_exec + 140 43 zaplifyiphone
0x00a98f18 main + 2156 44 zaplifyiphone
0x00002ff4 start + 52

2
I ended up resolving this by going to the project options :: Build :: iPhone Build :: (config debug / platform iPhone) :: Additional mtouch arguments and adding the following option: -aot "nimt-trampolines=512"Omri Gazitt

2 Answers

3
votes

I ended up resolving this by going to the project options :: Build :: iPhone Build :: (config debug / platform iPhone) :: Additional mtouch arguments

and adding the following option:

-aot "nimt-trampolines=512"

2
votes

You should copy-paste your comment into an answer and mark this question as answered (it's ok to answer our own question on stackoverflow) as it will help other people looking for the same issue.

You likely find out about this page while looking for this: http://docs.xamarin.com/ios/troubleshooting#Ran_out_of_trampolines_of_type_2

I modified Mono's runtime (used in MonoTouch) to print this URL when hitting this condition (type 0, 1 or 2). Hopefully this will make it a bit faster to solve this for other people.