[MonoTouch] SIGSEGV Error when tapping a button?

René Ruppert rene.ruppert at googlemail.com
Mon Dec 19 10:33:30 EST 2011


UIActionSheet is suspposed to work without any issues. I remember a mail
from Miguel stating that MT is taking care of the reference keeping and
that was explicitly about UIActionSheet.
I'm using UIActionSheets like that constantly, without a single crash. So I
assume your crash is coming from something else but I agree that it is a
NULL ref issue.

René

Am 19. Dezember 2011 10:37 schrieb Nic Wise <nicw at fastchicken.co.nz>:

> Actionsheets are async (As are a lot of things in CocoaTouch), so move
> the declaration outside of your method. You may find that some of it's
> being GC'ed before you get a chance to use it.
>
>
> On Mon, Dec 19, 2011 at 06:56, dermotos <me at dermotos.com> wrote:
> > I have a UITableView. In the first section of this I have a custom
> > UITableViewCell. This cell is loaded from EditorTableCell.xib which was
> > created as a View & View Controller in monodevelop, then the view
> removed in
> > Interface Editor and replaced with a UITableViewCell. The view outlet is
> > set. I have added 3 items: a text field, and two UIButtons. When I press
> one
> > of the buttons, it executes the below code:
> >
> > partial void onBtnImageTouchUpInside (NSObject sender)
> >                {
> >
> >                        var actionSheet = new UIActionSheet("") { "Take
> Photo", "Choose Photo",
> > "Cancel"} ;
> >                        actionSheet.Style =
> UIActionSheetStyle.BlackTranslucent;
> >                        actionSheet.CancelButtonIndex = 2;
> >
>  actionSheet.ShowInView(ContainingViewControllerReference.View);
> >
> >                        picker = new UIImagePickerController();
> >                        picker.Delegate = new PickerDelegate(this);
> >
> >
> >
> if(UIImagePickerController.IsCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front)
> > ||
> >
> >
> UIImagePickerController.IsCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Rear))
> >                        {  //At least one camera device is available:
> >                                actionSheet.Clicked += delegate(object
> sender2, UIButtonEventArgs e2) {
> >                                        switch(e2.ButtonIndex)
> >                                        {
> >                                        case 0: //Take photo with camera:
> >                                                picker.SourceType =
> UIImagePickerControllerSourceType.Camera;
> >
> >                                                //Switch to front camera
> if one is available:
> >
> >
> if(UIImagePickerController.IsCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front))
> >
>  picker.CameraDevice = UIImagePickerControllerCameraDevice.Front;
> >                                                else
> >
>  picker.CameraDevice = UIImagePickerControllerCameraDevice.Rear;
> >                                                picker.CameraCaptureMode =
> > UIImagePickerControllerCameraCaptureMode.Photo;
> >                                                picker.AllowsEditing =
> true;
> >
> >
> ContainingViewControllerReference.PresentModalViewController(picker,true);
> >
> >                                                break;
> >
> >
> >                                        case 1: //Choose from photo
> library:
> >                                                picker.SourceType =
> UIImagePickerControllerSourceType.PhotoLibrary;
> >                                                picker.AllowsEditing =
> true;
> >
>  //picker.CameraCaptureMode =
> > UIImagePickerControllerCameraCaptureMode.Photo;
> >                                                //string[] available =
> >
> UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary);
> >
> >
> ContainingViewControllerReference.PresentModalViewController(picker,true);
> >
> >                                                break;
> >
> >                                        case 2:
> >                                                //Cancelled
> >                                                break;
> >                                        }
> >
> >
> >                                } ;
> >                        }
> >                        else //No camera device available (Touch, iPad 1
> etc...)
> >                        {
> >                                picker.SourceType =
> UIImagePickerControllerSourceType.PhotoLibrary;
> >                                picker.AllowsEditing = true;
> >
> >
> ContainingViewControllerReference.PresentModalViewController(picker,true);
> >
> >
> >                        }
> >                }
> >
> > Now, this ONLY works if I put a breakpoint around the start of the above
> > method. If it runs through without a breakpoint, I hit the below error:
> >
> >  at MonoTouch.UIKit.UIApplication.Main (string[],string,string) <0x0010f>
> >  at MonoTouch.UIKit.UIApplication.Main (string[]) <0x00023>
> >  at ApolloApp.Application.Main (string[]) [0x00000] in
> > /Users/Dermot/Projects/Apollo/Apollo/Main.cs:15
> >  at (wrapper runtime-invoke) object.runtime_invoke_dynamic
> > (intptr,intptr,intptr,intptr) <0xffffffff>
> >
> > Native stacktrace:
> >
> >        0   Apollo                              0x00688e18
> > mono_handle_native_sigsegv + 456
> >        1   Apollo                              0x0066e7e4
> > mono_sigsegv_signal_handler + 428
> >        2   libsystem_c.dylib                   0x32c00539 _sigtramp + 48
> >        3   UIKit                               0x371d59eb -[UIApplication
> > sendAction:to:from:forEvent:] + 62
> >        4   UIKit                               0x371d59a7 -[UIApplication
> > sendAction:toTarget:fromSender:forEvent:] + 30
> >        5   UIKit                               0x371d5985 -[UIControl
> > sendAction:to:forEvent:] + 44
> >        6   UIKit                               0x371d56f5
> -[UIControl(Internal)
> > _sendActionsForEvents:withEvent:] + 492
> >        7   UIKit                               0x371d602d -[UIControl
> > touchesEnded:withEvent:] + 476
> >        8   UIKit                               0x371d450f -[UIWindow
> > _sendTouchesForEvent:] + 318
> >        9   UIKit                               0x371d3f01 -[UIWindow
> sendEvent:] +
> > 380
> >        10  UIKit                               0x371ba4ed -[UIApplication
> > sendEvent:] + 356
> >        11  UIKit                               0x371b9d2d
> > _UIApplicationHandleEvent + 5808
> >        12  GraphicsServices                    0x305ecdf3
> PurpleEventCallback +
> > 882
> >        13  CoreFoundation                      0x33de5553
> > __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 38
> >        14  CoreFoundation                      0x33de54f5
> __CFRunLoopDoSource1 +
> > 140
> >        15  CoreFoundation                      0x33de4343 __CFRunLoopRun
> + 1370
> >        16  CoreFoundation                      0x33d674dd
> CFRunLoopRunSpecific +
> > 300
> >        17  CoreFoundation                      0x33d673a5
> CFRunLoopRunInMode + 104
> >        18  GraphicsServices                    0x305ebfcd
> GSEventRunModal + 156
> >        19  UIKit                               0x371e8743
> UIApplicationMain + 1090
> >        20  Apollo                              0x00233764
> >
> wrapper_managed_to_native_MonoTouch_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr
> > + 240
> >        21  Apollo                              0x00205ca8
> > MonoTouch_UIKit_UIApplication_Main_string__ + 36
> >        22  Apollo                              0x000e0648
> > ApolloApp_Application_Main_string__ + 128
> >        23  Apollo                              0x0044fe64
> >
> wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr
> > + 200
> >        24  Apollo                              0x0066e408
> mono_jit_runtime_invoke
> > + 2892
> >        25  Apollo                              0x00766714
> mono_runtime_invoke +
> > 200
> >        26  Apollo                              0x0076983c
> mono_runtime_exec_main +
> > 836
> >        27  Apollo                              0x0076883c
> mono_runtime_run_main +
> > 968
> >        28  Apollo                              0x006754b8 mono_jit_exec
> + 244
> >        29  Apollo                              0x00668820 main + 3928
> >        30  Apollo                              0x00002988 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 ideas?!
> >
> > --
> > View this message in context:
> http://monotouch.2284126.n4.nabble.com/SIGSEGV-Error-when-tapping-a-button-tp4213187p4213187.html
> > Sent from the MonoTouch mailing list archive at Nabble.com.
> > _______________________________________________
> > MonoTouch mailing list
> > MonoTouch at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/monotouch
>
>
>
> --
> Nic Wise
> t.  +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise
> b. http://www.fastchicken.co.nz/
>
> Nearest Bus: find when the next bus is coming to your stop.
> http://goo.gl/Vcz1p
> mobileAgent (for FreeAgent): get your accounts in your pocket.
> http://goo.gl/IuBU
> Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa
> London Bike App: Find the nearest Boris Bike, and get riding!
> http://goo.gl/Icp2
> _______________________________________________
> MonoTouch mailing list
> MonoTouch at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/monotouch
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/monotouch/attachments/20111219/9f46673a/attachment-0001.html 


More information about the MonoTouch mailing list