Search code examples
multithreadingmonomacxamarin.mac

Silent crash in Xamarin.Mac / Monomac?


I need some advice with a random crash i'm facing in monomac, i think is related to how i use the UI, sometime i get an unknow selector error.

Here:

Stacktrace:

at <0xffffffff> at (wrapper managed-to-native) MonoMac.AppKit.NSApplication.NSApplicationMain (int,string[]) at MonoMac.AppKit.NSApplication.Main (string[]) [0x00041] in /Users/builder/data/lanes/xamcore-lion-1.10-branch/834542f8/source/xamcore/src/AppKit/NSApplication.cs:105 at Touring.MacOSX.MainClass.Main (string[]) [0x00005] in /Users/starlingonzalez/Desktop/TouringProject/Touring/Touring.MacOSX/Main.cs:17 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)

Native stacktrace:

Debug info from gdb:

^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D ^D quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit ^D quit quExecuting commands in '/tmp/mono-gdb-commands.rDRFXp'. (lldb) process attach --pid 4585 Process 4585 stopped Executable module set to "/Users/starlingonzalez/Desktop/TouringProject/Touring/Touring.MacOSX/bin/Release/Touring.app/Contents/MacOS/Touring". Architecture set to: i486-apple-macosx. (lldb) thread list Process 4585 stopped * thread #1: tid = 0x19905, 0x9a730fed libsystem_kernel.dylib__wait4 + 5, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP thread #2: tid = 0x19911, 0x9a731992 libsystem_kernel.dylibkevent64 + 10, queue = 'com.apple.libdispatch-manager' thread #3: tid = 0x19912, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 thread #4: tid = 0x19914, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 thread #5: tid = 0x19916, 0x9a72bfb6 libsystem_kernel.dylibsemaphore_wait_trap + 10 thread #6: tid = 0x19917, 0x9a730a26 libsystem_kernel.dylib__recvfrom + 10 thread #7: tid = 0x19919, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 thread #8: tid = 0x1992d, 0x9a72bf7a libsystem_kernel.dylibmach_msg_trap + 10 (lldb) thread backtrace all * thread #1: tid = 0x19905, 0x9a730fed libsystem_kernel.dylib__wait4 + 5, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x9a730fed libsystem_kernel.dylib__wait4 + 5 frame #1: 0x97e70ec5 libsystem_c.dylibwaitpid$UNIX2003 + 48 frame #2: 0x00187319 Touringmono_handle_native_sigsegv(signal=11, ctx=0x016eafe0) + 489 at mini-exceptions.c:2323 frame #3: 0x001241a5 Touringmono_arch_handle_altstack_exception(sigctx=0x016eafe0, fault_addr=0x37d8f5bb, stack_ovf=0) + 149 at exceptions-x86.c:1159 frame #4: 0x001b5dbf Touringmono_sigsegv_signal_handler(_dummy=11, info=0x016eafa0, context=0x016eafe0) + 415 at mini.c:6860 frame #5: 0x963cbdeb libsystem_platform.dylib`_sigtramp + 43

thread #2: tid = 0x19911, 0x9a731992 libsystem_kernel.dylibkevent64 + 10, queue = 'com.apple.libdispatch-manager' frame #0: 0x9a731992 libsystem_kernel.dylibkevent64 + 10 frame #1: 0x974ef899 libdispatch.dylib_dispatch_mgr_invoke + 238 frame #2: 0x974ef532 libdispatch.dylib_dispatch_mgr_thread + 52

thread #3: tid = 0x19912, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #1: 0x902e0dcf libsystem_pthread.dylib`_pthread_wqthread + 372

thread #4: tid = 0x19914, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #1: 0x902e0dcf libsystem_pthread.dylib`_pthread_wqthread + 372

thread #5: tid = 0x19916, 0x9a72bfb6 libsystem_kernel.dylibsemaphore_wait_trap + 10 frame #0: 0x9a72bfb6 libsystem_kernel.dylibsemaphore_wait_trap + 10 frame #1: 0x00327fce Touringmono_sem_wait(sem=<unavailable>, alertable=<unavailable>, sem=0x0042d700, alertable=1) + 30 at mono-semaphore.c:103 frame #2: 0x00209eab Touringfinalizer_thread(unused=0x00000000) + 187 at gc.c:1077 frame #3: 0x002e8395 Touringstart_wrapper [inlined] start_wrapper_internal(data=0x7be2fb40) + 523 at threads.c:660 frame #4: 0x002e818a Touringstart_wrapper(data=0x7be2fb40) + 26 at threads.c:707 frame #5: 0x00328cfd Touringinner_start_thread(arg=0xbff36670) + 253 at mono-threads-posix.c:100 frame #6: 0x902df5fb libsystem_pthread.dylib_pthread_body + 144 frame #7: 0x902df485 libsystem_pthread.dylib`_pthread_start + 130

thread #6: tid = 0x19917, 0x9a730a26 libsystem_kernel.dylib__recvfrom + 10 frame #0: 0x9a730a26 libsystem_kernel.dylib__recvfrom + 10 frame #1: 0x97e710c9 libsystem_c.dylibrecv$UNIX2003 + 54 frame #2: 0x00100480 Touringsocket_transport_recv(buf=0xb039af2d, len=11) + 160 at debugger-agent.c:1131 frame #3: 0x000fc4bb Touringdebugger_thread(arg=0x00000000) + 22267 at debugger-agent.c:1557 frame #4: 0x00328cfd Touringinner_start_thread(arg=0xbff36680) + 253 at mono-threads-posix.c:100 frame #5: 0x902df5fb libsystem_pthread.dylib_pthread_body + 144 frame #6: 0x902df485 libsystem_pthread.dylib_pthread_start + 130

thread #7: tid = 0x19919, 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x9a731046 libsystem_kernel.dylib__workq_kernreturn + 10 frame #1: 0x902e0dcf libsystem_pthread.dylib`_pthread_wqthread + 372

thread #8: tid = 0x1992d, 0x9a72bf7a libsystem_kernel.dylibmach_msg_trap + 10 frame #0: 0x9a72bf7a libsystem_kernel.dylibmach_msg_trap + 10 frame #1: 0x9a72b16c libsystem_kernel.dylibmach_msg + 68 frame #2: 0x9a577bf9 CoreFoundation__CFRunLoopServiceMachPort + 169 frame #3: 0x9a5771d1 CoreFoundation__CFRunLoopRun + 1393 frame #4: 0x9a5769ea CoreFoundationCFRunLoopRunSpecific + 394 frame #5: 0x9a57684b CoreFoundationCFRunLoopRunInMode + 123 frame #6: 0x90c95b88 AppKit_NSEventThread + 283 frame #7: 0x902df5fb libsystem_pthread.dylib_pthread_body + 144 frame #8: 0x902df485 libsystem_pthread.dylib_pthread_start + 130 (lldb) detach Detaching from process 4585 (lldb) quit


Solution

  • ok i figure it out after many try and catch here and there, that you can put in the constructor of your AppDelegate.cs class the following:

                AppDomain.CurrentDomain.UnhandledException += (object sender, UnhandledExceptionEventArgs e) => {
                    Exception GivenException = (Exception) e.ExceptionObject;
                    Console.WriteLine( GivenException.Message);
                    Console.WriteLine( GivenException.StackTrace);
                    Console.WriteLine("Runtime terminating: {0}", e.IsTerminating);
                };
    

    This will not avoid the app for terminate but at least you will know exactly where to look and fix the issues.

    Just dropped here in case somebody is having same issues.