[MonoTouch] SIGSEGV while executing native code
Guido Van Hoecke
guivho at gmail.com
Fri Oct 7 06:56:59 EDT 2011
Can somebody explain following error?
I get sigsegv errors in an app under development. I separated the
'offending' code to demonstrate the problem. Just create a new
empty monotouch project and replace the FinishedLaunching method:
public override bool FinishedLaunching (UIApplication app,
NSDictionary options)
{
window = new UIWindow (UIScreen.MainScreen.Bounds);
var view = new UIView(UIScreen.MainScreen.Bounds);
var label = new UILabel(new RectangleF(0, 0,
view.Bounds.Size.Width, view.Bounds.Size.Height));
label.TextAlignment = UITextAlignment.Center;
label.Text = "hi there";
view.AddSubview(label);
var toolBar = new UIToolbar (
new RectangleF(0, view.Bounds.Size.Height - 44f,
view.Bounds.Size.Width, 44f));
var button = new UIBarButtonItem {
Title = "button",
Style = UIBarButtonItemStyle.Bordered };
button.Clicked += delegate {
using (var alert = new UIAlertView {Title = "alert",
Message = "message" }) {
alert.AddButton("yes");
alert.AddButton("no");
alert.Clicked += delegate(object sender,
UIButtonEventArgs e) {
if (e.ButtonIndex == 0) {
label.Text = "we got a 'yes'";
} else {
label.Text = "too bad...";
}
};
alert.Show();
}
};
var flex = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
toolBar.SetItems(new[] {flex, button, flex}, false);
view.AddSubview(toolBar);
window.AddSubview (view);
window.MakeKeyAndVisible ();
return true;
}
When you run this app from MD, either targeting
Release/iPhoneSimulator or Debug/iPhoneSimulator, the app
randomly crashes when hitting the 'button' or one of the 'yes' or
'no' buttons on the alertview. Funny thing is that the app does
not crash when started from the simulator. It works just fine
then. The error only occurs when running under control of MD.
This is probably a Garbage Collector error. The error happens at
different times: sometimes only when hitting the 'yes' or 'no'
button, sometimes even after showing the alertview, before a
button can be pressed.
Stacktrace:
at (wrapper managed-to-native)
MonoTouch.UIKit.UIApplication.UIApplicationMain
(int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff>
at MonoTouch.UIKit.UIApplication.Main (string[],string,string)
[0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29
at Sigsegv.Application.Main (string[]) <IL 0x00007, 0x00017>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object
(object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>
Native stacktrace:
0 Sigsegv 0x000d1e9c
mono_handle_native_sigsegv + 343
1 Sigsegv 0x000100e0
mono_sigsegv_signal_handler + 322
2 libsystem_c.dylib 0x99b8659b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 UIKit 0x01cd84fd -[UIApplication
sendAction:to:from:forEvent:] + 119
5 UIKit 0x01d68799 -[UIControl
sendAction:to:forEvent:] + 67
6 UIKit 0x01d6ac2b
-[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
7 UIKit 0x01d697d8 -[UIControl
touchesEnded:withEvent:] + 458
8 UIKit 0x01cfcded -[UIWindow
_sendTouchesForEvent:] + 567
9 UIKit 0x01cddc37 -[UIApplication
sendEvent:] + 447
10 UIKit 0x01ce2f2e
_UIApplicationHandleEvent + 7576
11 GraphicsServices 0x04053992 PurpleEventCallback + 1550
12 CoreFoundation 0x00ea6944
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
13 CoreFoundation 0x00e06cf7 __CFRunLoopDoSource1 + 215
14 CoreFoundation 0x00e03f83 __CFRunLoopRun + 979
15 CoreFoundation 0x00e03840 CFRunLoopRunSpecific + 208
16 CoreFoundation 0x00e03761 CFRunLoopRunInMode + 97
17 GraphicsServices 0x040521c4 GSEventRunModal + 217
18 GraphicsServices 0x04052289 GSEventRun + 115
19 UIKit 0x01ce6c93 UIApplicationMain + 1160
20 ??? 0x077f6b0c 0x0 + 125790988
21 ??? 0x077f5db8 0x0 + 125787576
22 ??? 0x077f5c50 0x0 + 125787216
23 ??? 0x077f5cdf 0x0 + 125787359
24 Sigsegv 0x0000fe9b
mono_jit_runtime_invoke + 1332
25 Sigsegv 0x001ee961 mono_runtime_invoke + 137
26 Sigsegv 0x001f1048 mono_runtime_exec_main + 669
27 Sigsegv 0x001f0432 mono_runtime_run_main + 843
28 Sigsegv 0x000a3f9e mono_jit_exec + 200
29 Sigsegv 0x002a3d21 main + 3733
30 Sigsegv 0x00003179 _start + 208
31 Sigsegv 0x000030a8 start + 40
=================================================================
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.
=================================================================
Any help or advice, any one?
Guido.
More information about the MonoTouch
mailing list