Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[appkit] Add NSImage lazy initialization #2

Closed
wants to merge 1 commit into from
Closed

[appkit] Add NSImage lazy initialization #2

wants to merge 1 commit into from

Conversation

VincentDondain
Copy link
Contributor

@VincentDondain VincentDondain commented Apr 26, 2016

We were missing initByReferencingFile: which initializes
the image object lazily.

The non working use case was:

var iconFile = NSBundle.MainBundle.PathForResource ("AppIcons", "icns");
NSApplication.SharedApplication.ApplicationIconImage = new NSImage (iconFile);

Here the constructor is calling initWithContentsOfFile: which will
not load the right icon from the .icns file.

That fixes https://bugzilla.xamarin.com/show_bug.cgi?id=40349.

@rolfbjarne
Copy link
Member

I think it's better to bind the two methods internally (in appkit.cs), and then just chose either depending on the lazy parameter.

It's easy to get manual binding wrong (and in fact I believe you have a leak in your code).

@spouliot
Copy link
Contributor

yes, better to use [Internal] bindings for the reasons @rolfbjarne mentioned and also since the [Export] attribute is used by other tools (e.g. documentation, rosetta, xtro tests).

We were missing initByReferencingFile: which initializes
the image object lazily.

The non working use case was:

var iconFile = NSBundle.MainBundle.PathForResource ("AppIcons", "icns");
NSApplication.SharedApplication.ApplicationIconImage = new NSImage (iconFile);

In this example, the constructor is calling initWithContentsOfFile: which will
not load the right icon from the .icns file.

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=40349.
@VincentDondain
Copy link
Contributor Author

Alright, I updated the code to be a simple constructor taking a bool instead of a static method.

The story is that I changed my mind while writing the static method initially to make it use the boolean. The plan, as described in https://bugzilla.xamarin.com/show_bug.cgi?id=40349, defined by Chris, was to get 2 static methods (therefore, requiring manual bindings).

Thanks for the feedback guys.

@VincentDondain VincentDondain changed the title [appkit] Add NSImage.FromFile [appkit] Add NSImage lazy initialization Apr 27, 2016
if (lazy)
Handle = InitByReferencingFile (fileName);
else
Handle = new NSImage (fileName).Handle;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't work, now you have two managed objects using the same native handle.

This means the moment the GC collects one of them, the other will point to random memory, and crash when used.

My suggestion here would be to add another interna binding for this overload, and use that instead (like you did for InitByReferencingFile).

@VincentDondain
Copy link
Contributor Author

Closing since the changes from my old private fork can't make it into the PR since the repo has been open sourced.

rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios May 13, 2016
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/fcntl.2.html

F_SETNOSIGPIPE

(lldb) bt all
  thread #1: tid = 0x1e176c9, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_a07', queue = 'com.apple.main-thread', stop reason = signal SIGPIPE
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00425118 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7f0b5ac0, mutex=0x7f0b5a94, timeout_ms=15000) + 264 at mono-os-mutex.h:134
    frame #4: 0x00424e12 com.xamarin.systemtests.watchkitapp.watchkitextension`_wapi_handle_timedwait_signal_handle(handle=0x00000162, timeout=15000, alertable=1, poll=0, alerted=0xbff5c78c) + 802 at handles.c:1554
    frame #5: 0x00443387 com.xamarin.systemtests.watchkitapp.watchkitextension`wapi_WaitForSingleObjectEx(handle=0x00000162, timeout=15000, alertable=1) + 1127 at wait.c:173
    frame xamarin#6: 0x003a51a1 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_wait_uninterrupted(thread=0x12324120, multiple=0, numhandles=1, handles=0xbff5c874, waitall=0, ms=15000, alertable=1) + 225 at threads.c:1518
    frame xamarin#7: 0x003a55a2 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Threading_WaitHandle_WaitOne_internal(this_obj=0x115f65e0, handle=0x00000162, ms=15000, exitContext=0) + 162 at threads.c:1652
    frame xamarin#8: 0x137f06cc
    frame xamarin#9: 0x137f0594
    frame xamarin#10: 0x137f0382
    frame xamarin#11: 0x13e9053c
    frame xamarin#12: 0x13765e23
    frame xamarin#13: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#14: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#15: 0x0033bc75 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke_array(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 2293 at object.c:4437
    frame xamarin#16: 0x002b3f1b com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_InternalInvoke(method=0x1351cab0, this_arg=0x1159d670, params=0x00000000, exc=0xbff5cd68) + 2475 at icall.c:2804
    frame xamarin#17: 0x13766724
    frame xamarin#18: 0x13766560
    frame xamarin#19: 0x13766494
    frame xamarin#20: 0x137662c4
    frame xamarin#21: 0x13768af8
    frame xamarin#22: 0x13768394
    frame xamarin#23: 0x13768224
    frame xamarin#24: 0x13765f7f
    frame xamarin#25: 0x13765e93
    frame xamarin#26: 0x1375fcda
    frame xamarin#27: 0x1375f6dc
    frame xamarin#28: 0x137641cb
    frame xamarin#29: 0x13762458
    frame xamarin#30: 0x1375fcda
    frame xamarin#31: 0x1375f6dc
    frame xamarin#32: 0x137641cb
    frame xamarin#33: 0x13762458
    frame xamarin#34: 0x1375fcda
    frame xamarin#35: 0x1375f6dc
    frame xamarin#36: 0x137641cb
    frame xamarin#37: 0x13762458
    frame xamarin#38: 0x1375fcda
    frame xamarin#39: 0x1375f6dc
    frame xamarin#40: 0x1375e32d
    frame xamarin#41: 0x137285c0
    frame xamarin#42: 0x13728514
    frame xamarin#43: 0x137284a8
    frame xamarin#44: 0x12c4f7ef
    frame xamarin#45: 0x1298f833
    frame xamarin#46: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7c8b8440, obj=0x115ecb40, params=0xbff5d7ac, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#47: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7c8b8440, obj=0x115ecb40, params=0xbff5d7ac, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#48: 0x00494361 com.xamarin.systemtests.watchkitapp.watchkitextension`native_to_managed_trampoline_1(self=0x7d431130, _cmd="xamarinApplySelector", managed_method_ptr=0x00564d4c, r0="Foundation.NSAsyncActionDispatcher, Xamarin.WatchOS", r1="Apply") + 289 at Xamarin.WatchOS.registrar.watchos.m:40
    frame xamarin#49: 0x00494caa com.xamarin.systemtests.watchkitapp.watchkitextension`-[__MonoMac_NSAsyncActionDispatcher xamarinApplySelector](self=0x7d431130, _cmd="xamarinApplySelector") + 74 at Xamarin.WatchOS.registrar.watchos.m:1831
    frame xamarin#50: 0x045aa05d libobjc.A.dylib`-[NSObject performSelector:withObject:] + 70
    frame xamarin#51: 0x0076af17 Foundation`__NSThreadPerformPerform + 323
    frame xamarin#52: 0x0119828f CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    frame xamarin#53: 0x0118df1b CoreFoundation`__CFRunLoopDoSources0 + 523
    frame xamarin#54: 0x0118d338 CoreFoundation`__CFRunLoopRun + 1032
    frame xamarin#55: 0x0118cc76 CoreFoundation`CFRunLoopRunSpecific + 470
    frame xamarin#56: 0x0118ca8b CoreFoundation`CFRunLoopRunInMode + 123
    frame xamarin#57: 0x0076f601 Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
    frame xamarin#58: 0x008159cd Foundation`-[NSRunLoop(NSRunLoop) run] + 82
    frame xamarin#59: 0x053c30eb libxpc.dylib`_xpc_objc_main + 486
    frame xamarin#60: 0x053c5e4a libxpc.dylib`xpc_main + 215
    frame xamarin#61: 0x0093ec45 Foundation`-[NSXPCListener resume] + 186
    frame xamarin#62: 0x0d7f0326 PlugInKit`-[PKService run] + 582
    frame xamarin#63: 0x0178cc69 WatchKit`main + 146
    frame xamarin#64: 0x00493507 com.xamarin.systemtests.watchkitapp.watchkitextension`xamarin_main(argc=1, argv=0xbff5e954, is_extension=true) + 2599 at monotouch-main.m:461
    frame xamarin#65: 0x004a176c com.xamarin.systemtests.watchkitapp.watchkitextension`xamarin_watchextension_main(argc=1, argv=0xbff5e954) + 124 at main.i386.m:37
    frame xamarin#66: 0x050e3ae1 libdyld.dylib`start + 1

  thread #2: tid = 0x1e18197, 0x054347f6 libsystem_kernel.dylib`kevent64 + 10, queue = 'com.apple.libdispatch-manager'
    frame #0: 0x054347f6 libsystem_kernel.dylib`kevent64 + 10
    frame #1: 0x050ad2db libdispatch.dylib`_dispatch_mgr_invoke + 257
    frame #2: 0x050ad02b libdispatch.dylib`_dispatch_mgr_thread + 60

  thread #5: tid = 0x1e181a3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdcc0 libsystem_pthread.dylib`pthread_cond_wait$UNIX2003 + 71
    frame #3: 0x0041b3af com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_wait(cond=0x00564418, mutex=0x005643ec) + 47 at mono-os-mutex.h:105
    frame #4: 0x0041addd com.xamarin.systemtests.watchkitapp.watchkitextension`thread_func(thread_data=0x00000000) + 125 at sgen-thread-pool.c:118
    frame #5: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#6: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#7: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

* thread xamarin#6: tid = 0x1e181a4, 0x054353c6 libsystem_kernel.dylib`__write + 10, name = 'tid_2403'
    frame #0: 0x054353c6 libsystem_kernel.dylib`__write + 10
  * frame #1: 0x00398113 com.xamarin.systemtests.watchkitapp.watchkitextension`selector_thread_wakeup + 67 at threadpool-ms-io.c:149
    frame #2: 0x00398251 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_threadpool_ms_io_remove_socket(fd=20) + 113 at threadpool-ms-io.c:620
    frame #3: 0x0038f466 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Net_Sockets_Socket_Close_internal(sock=20, error=0xb0298b7c) + 38 at socket-io.c:692
    frame #4: 0x13745fc4
    frame #5: 0x13745df0
    frame xamarin#6: 0x13737795
    frame xamarin#7: 0x13745a8c
    frame xamarin#8: 0x13745a24
    frame xamarin#9: 0x137459e3
    frame xamarin#10: 0x137458f0
    frame xamarin#11: 0x13e33c0b
    frame xamarin#12: 0x13455c3c
    frame xamarin#13: 0x002a45e8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_gc_run_finalize(obj=0x1396cb60, data=0x00000000) + 1384 at gc.c:256
    frame xamarin#14: 0x00379fa4 com.xamarin.systemtests.watchkitapp.watchkitextension`sgen_client_run_finalize(obj=0x1396cb60) + 36 at sgen-mono.c:492
    frame xamarin#15: 0x003e121e com.xamarin.systemtests.watchkitapp.watchkitextension`sgen_gc_invoke_finalizers + 382 at sgen-gc.c:2455
    frame xamarin#16: 0x00379fbb com.xamarin.systemtests.watchkitapp.watchkitextension`mono_gc_invoke_finalizers + 11 at sgen-mono.c:498
    frame xamarin#17: 0x002a5f4a com.xamarin.systemtests.watchkitapp.watchkitextension`finalizer_thread(unused=0x00000000) + 442 at gc.c:739
    frame xamarin#18: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7bf07420) + 723 at threads.c:717
    frame xamarin#19: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7bf07420) + 34 at threads.c:764
    frame xamarin#20: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5e3e8) + 583 at mono-threads-posix.c:92
    frame xamarin#21: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#22: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#23: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#7: tid = 0x1e181b5, 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x053f952d libsystem_pthread.dylib`_pthread_wqthread + 1289
    frame #2: 0x053f6f72 libsystem_pthread.dylib`start_wqthread + 34

  thread xamarin#8: tid = 0x1e181b6, 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x053f952d libsystem_pthread.dylib`_pthread_wqthread + 1289
    frame #2: 0x053f6f72 libsystem_pthread.dylib`start_wqthread + 34

  thread xamarin#9: tid = 0x1e181d2, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_2f0f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00464538 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x00564b74, mutex=0x00564b48, timeout_ms=100) + 264 at mono-os-mutex.h:134
    frame #4: 0x004641ef com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x00564b74, mutex=0x00564b48, timeout_ms=100) + 63 at mono-coop-mutex.h:107
    frame #5: 0x00462dd5 com.xamarin.systemtests.watchkitapp.watchkitextension`sleep_interruptable(ms=100, alerted=0xb02bae2c) + 421 at mono-threads.c:1155
    frame xamarin#6: 0x00462a8b com.xamarin.systemtests.watchkitapp.watchkitextension`mono_thread_info_sleep(ms=100, alerted=0xb02bae2c) + 139 at mono-threads.c:1187
    frame xamarin#7: 0x003a0567 com.xamarin.systemtests.watchkitapp.watchkitextension`monitor_thread + 295 at threadpool-ms.c:887
    frame xamarin#8: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d33d9f0) + 723 at threads.c:717
    frame xamarin#9: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d33d9f0) + 34 at threads.c:764
    frame xamarin#10: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5d1a8) + 583 at mono-threads-posix.c:92
    frame xamarin#11: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#12: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#13: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#10: tid = 0x1e181d3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_300f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=18478) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=18478) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7be244b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7be244b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5d148) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#11: tid = 0x1e181d6, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_370b'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=23036) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=23036) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d0222a0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d0222a0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0520738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#12: tid = 0x1e1828f, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_400f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00425118 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7f0b2eec, mutex=0x7f0b2ec0, timeout_ms=89999) + 264 at mono-os-mutex.h:134
    frame #4: 0x00424e12 com.xamarin.systemtests.watchkitapp.watchkitextension`_wapi_handle_timedwait_signal_handle(handle=0x0000010d, timeout=89999, alertable=1, poll=0, alerted=0xb072494c) + 802 at handles.c:1554
    frame #5: 0x00443387 com.xamarin.systemtests.watchkitapp.watchkitextension`wapi_WaitForSingleObjectEx(handle=0x0000010d, timeout=89999, alertable=1) + 1127 at wait.c:173
    frame xamarin#6: 0x003a51a1 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_wait_uninterrupted(thread=0x123266a0, multiple=0, numhandles=1, handles=0xb0724a34, waitall=0, ms=89999, alertable=1) + 225 at threads.c:1518
    frame xamarin#7: 0x003a55a2 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Threading_WaitHandle_WaitOne_internal(this_obj=0x115f1b00, handle=0x0000010d, ms=89999, exitContext=0) + 162 at threads.c:1652
    frame xamarin#8: 0x137f06cc
    frame xamarin#9: 0x137f0594
    frame xamarin#10: 0x137f0382
    frame xamarin#11: 0x1376c06e
    frame xamarin#12: 0x1376af7b
    frame xamarin#13: 0x1344d8b8
    frame xamarin#14: 0x1344d36c
    frame xamarin#15: 0x1376a9d0
    frame xamarin#16: 0x1376a8f8
    frame xamarin#17: 0x1376a883
    frame xamarin#18: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7f18c1f0, obj=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#19: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7f18c1f0, obj=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#20: 0x00339b7f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_delegate_invoke(delegate=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 175 at object.c:3657
    frame xamarin#21: 0x003ab807 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d26a5f0) + 855 at threads.c:723
    frame xamarin#22: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d26a5f0) + 34 at threads.c:764
    frame xamarin#23: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5b248) + 583 at mono-threads-posix.c:92
    frame xamarin#24: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#25: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#26: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#13: tid = 0x1e190a8, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_5593'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=59668) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=59668) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d36b470) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d36b470) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0622738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#14: tid = 0x1e19492, 0x0543373e libsystem_kernel.dylib`__select + 10, name = 'tid_1c07'
    frame #0: 0x0543373e libsystem_kernel.dylib`__select + 10
    frame #1: 0x00458e30 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_poll(ufds=<unavailable>, nfds=14, timeout=<unavailable>) + 416 at mono-poll.c:83
    frame #2: 0x00399788 com.xamarin.systemtests.watchkitapp.watchkitextension`poll_event_wait(callback=(com.xamarin.systemtests.watchkitapp.watchkitextension`wait_callback at threadpool-ms-io.c:247), user_data=0x7d27edd0) + 152 at threadpool-ms-io-poll.c:152
    frame #3: 0x00398eb8 com.xamarin.systemtests.watchkitapp.watchkitextension`selector_thread(data=0x00000000) + 2104 at threadpool-ms-io.c:413
    frame #4: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d27f390) + 723 at threads.c:717
    frame #5: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d27f390) + 34 at threads.c:764
    frame xamarin#6: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5c4a8) + 583 at mono-threads-posix.c:92
    frame xamarin#7: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#8: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#9: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#15: tid = 0x1e1949d, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_42cf'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=25061) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=25061) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d2783b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d2783b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0826738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#16: tid = 0x1e194a2, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_4337'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=58904) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=58904) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d2792b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d2792b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb00b4648) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#17: tid = 0x1e194a3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_5d0b'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=44800) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=44800) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d279930) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d279930) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0520738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#18: tid = 0x1e194a4, 0x0044a69d com.xamarin.systemtests.watchkitapp.watchkitextension`get_hazardous_pointer(pp=0x7be4324c, hp=0x11536384, hazard_index=1) + 381 at hazard-pointer.c:215, name = 'tid_4fa3'
    frame #0: 0x0044a69d com.xamarin.systemtests.watchkitapp.watchkitextension`get_hazardous_pointer(pp=0x7be4324c, hp=0x11536384, hazard_index=1) + 381 at hazard-pointer.c:215
    frame #1: 0x002c6752 com.xamarin.systemtests.watchkitapp.watchkitextension`jit_info_table_chunk_index(chunk=0x7be43200, hp=0x11536384, addr=0x13761be0) + 130 at jit-info.c:200
    frame #2: 0x002c54b2 com.xamarin.systemtests.watchkitapp.watchkitextension`jit_info_table_find(table=0x7f29de00, hp=0x11536384, addr=0x13761be0) + 178 at jit-info.c:222
    frame #3: 0x002c5255 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_info_table_find_internal(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                                 P?O???D$\x04\x93\x88", try_aot=1, allow_trampolines=1) + 133 at jit-info.c:293
    frame #4: 0x001bacf6 com.xamarin.systemtests.watchkitapp.watchkitextension`mini_jit_info_table_find_ext(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                            P?O???D$\x04\x93\x88", allow_trampolines=1, out_domain=0x00000000) + 102 at mini-exceptions.c:1020
    frame #5: 0x001b95d2 com.xamarin.systemtests.watchkitapp.watchkitextension`mini_jit_info_table_find(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                        P?O???D$\x04\x93\x88", out_domain=0x00000000) + 66 at mini-exceptions.c:1058
    frame xamarin#6: 0x001d9b3b com.xamarin.systemtests.watchkitapp.watchkitextension`common_call_trampoline_inner(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                          P?O???D$\x04\x93\x88", m=0x7f17d830, vt=0x00000000, vtable_slot=0x00000000) + 5147 at mini-trampolines.c:784
    frame xamarin#7: 0x001d5e1b com.xamarin.systemtests.watchkitapp.watchkitextension`common_call_trampoline(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                    P?O???D$\x04\x93\x88", m=0x7f17d830, vt=0x00000000, vtable_slot=0x00000000) + 91 at mini-trampolines.c:808
    frame xamarin#8: 0x001d5db7 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_magic_trampoline(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                   P?O???D$\x04\x93\x88", arg=0x7f17d830, tramp=0x00000000) + 103 at mini-trampolines.c:823
    frame xamarin#9: 0x11526188

  thread xamarin#19: tid = 0x1e194a5, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_4717'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=22144) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=22144) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d369d60) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d369d60) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0a2a738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34
rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios May 16, 2016
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/fcntl.2.html

F_SETNOSIGPIPE

(lldb) bt all
  thread #1: tid = 0x1e176c9, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_a07', queue = 'com.apple.main-thread', stop reason = signal SIGPIPE
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00425118 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7f0b5ac0, mutex=0x7f0b5a94, timeout_ms=15000) + 264 at mono-os-mutex.h:134
    frame #4: 0x00424e12 com.xamarin.systemtests.watchkitapp.watchkitextension`_wapi_handle_timedwait_signal_handle(handle=0x00000162, timeout=15000, alertable=1, poll=0, alerted=0xbff5c78c) + 802 at handles.c:1554
    frame #5: 0x00443387 com.xamarin.systemtests.watchkitapp.watchkitextension`wapi_WaitForSingleObjectEx(handle=0x00000162, timeout=15000, alertable=1) + 1127 at wait.c:173
    frame xamarin#6: 0x003a51a1 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_wait_uninterrupted(thread=0x12324120, multiple=0, numhandles=1, handles=0xbff5c874, waitall=0, ms=15000, alertable=1) + 225 at threads.c:1518
    frame xamarin#7: 0x003a55a2 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Threading_WaitHandle_WaitOne_internal(this_obj=0x115f65e0, handle=0x00000162, ms=15000, exitContext=0) + 162 at threads.c:1652
    frame xamarin#8: 0x137f06cc
    frame xamarin#9: 0x137f0594
    frame xamarin#10: 0x137f0382
    frame xamarin#11: 0x13e9053c
    frame xamarin#12: 0x13765e23
    frame xamarin#13: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#14: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#15: 0x0033bc75 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke_array(method=0x7c8c8950, obj=0x1159d670, params=0x00000000, exc=0x00000000) + 2293 at object.c:4437
    frame xamarin#16: 0x002b3f1b com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_InternalInvoke(method=0x1351cab0, this_arg=0x1159d670, params=0x00000000, exc=0xbff5cd68) + 2475 at icall.c:2804
    frame xamarin#17: 0x13766724
    frame xamarin#18: 0x13766560
    frame xamarin#19: 0x13766494
    frame xamarin#20: 0x137662c4
    frame xamarin#21: 0x13768af8
    frame xamarin#22: 0x13768394
    frame xamarin#23: 0x13768224
    frame xamarin#24: 0x13765f7f
    frame xamarin#25: 0x13765e93
    frame xamarin#26: 0x1375fcda
    frame xamarin#27: 0x1375f6dc
    frame xamarin#28: 0x137641cb
    frame xamarin#29: 0x13762458
    frame xamarin#30: 0x1375fcda
    frame xamarin#31: 0x1375f6dc
    frame xamarin#32: 0x137641cb
    frame xamarin#33: 0x13762458
    frame xamarin#34: 0x1375fcda
    frame xamarin#35: 0x1375f6dc
    frame xamarin#36: 0x137641cb
    frame xamarin#37: 0x13762458
    frame xamarin#38: 0x1375fcda
    frame xamarin#39: 0x1375f6dc
    frame xamarin#40: 0x1375e32d
    frame xamarin#41: 0x137285c0
    frame xamarin#42: 0x13728514
    frame xamarin#43: 0x137284a8
    frame xamarin#44: 0x12c4f7ef
    frame xamarin#45: 0x1298f833
    frame xamarin#46: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7c8b8440, obj=0x115ecb40, params=0xbff5d7ac, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#47: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7c8b8440, obj=0x115ecb40, params=0xbff5d7ac, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#48: 0x00494361 com.xamarin.systemtests.watchkitapp.watchkitextension`native_to_managed_trampoline_1(self=0x7d431130, _cmd="xamarinApplySelector", managed_method_ptr=0x00564d4c, r0="Foundation.NSAsyncActionDispatcher, Xamarin.WatchOS", r1="Apply") + 289 at Xamarin.WatchOS.registrar.watchos.m:40
    frame xamarin#49: 0x00494caa com.xamarin.systemtests.watchkitapp.watchkitextension`-[__MonoMac_NSAsyncActionDispatcher xamarinApplySelector](self=0x7d431130, _cmd="xamarinApplySelector") + 74 at Xamarin.WatchOS.registrar.watchos.m:1831
    frame xamarin#50: 0x045aa05d libobjc.A.dylib`-[NSObject performSelector:withObject:] + 70
    frame xamarin#51: 0x0076af17 Foundation`__NSThreadPerformPerform + 323
    frame xamarin#52: 0x0119828f CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    frame xamarin#53: 0x0118df1b CoreFoundation`__CFRunLoopDoSources0 + 523
    frame xamarin#54: 0x0118d338 CoreFoundation`__CFRunLoopRun + 1032
    frame xamarin#55: 0x0118cc76 CoreFoundation`CFRunLoopRunSpecific + 470
    frame xamarin#56: 0x0118ca8b CoreFoundation`CFRunLoopRunInMode + 123
    frame xamarin#57: 0x0076f601 Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
    frame xamarin#58: 0x008159cd Foundation`-[NSRunLoop(NSRunLoop) run] + 82
    frame xamarin#59: 0x053c30eb libxpc.dylib`_xpc_objc_main + 486
    frame xamarin#60: 0x053c5e4a libxpc.dylib`xpc_main + 215
    frame xamarin#61: 0x0093ec45 Foundation`-[NSXPCListener resume] + 186
    frame xamarin#62: 0x0d7f0326 PlugInKit`-[PKService run] + 582
    frame xamarin#63: 0x0178cc69 WatchKit`main + 146
    frame xamarin#64: 0x00493507 com.xamarin.systemtests.watchkitapp.watchkitextension`xamarin_main(argc=1, argv=0xbff5e954, is_extension=true) + 2599 at monotouch-main.m:461
    frame xamarin#65: 0x004a176c com.xamarin.systemtests.watchkitapp.watchkitextension`xamarin_watchextension_main(argc=1, argv=0xbff5e954) + 124 at main.i386.m:37
    frame xamarin#66: 0x050e3ae1 libdyld.dylib`start + 1

  thread #2: tid = 0x1e18197, 0x054347f6 libsystem_kernel.dylib`kevent64 + 10, queue = 'com.apple.libdispatch-manager'
    frame #0: 0x054347f6 libsystem_kernel.dylib`kevent64 + 10
    frame #1: 0x050ad2db libdispatch.dylib`_dispatch_mgr_invoke + 257
    frame #2: 0x050ad02b libdispatch.dylib`_dispatch_mgr_thread + 60

  thread #5: tid = 0x1e181a3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdcc0 libsystem_pthread.dylib`pthread_cond_wait$UNIX2003 + 71
    frame #3: 0x0041b3af com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_wait(cond=0x00564418, mutex=0x005643ec) + 47 at mono-os-mutex.h:105
    frame #4: 0x0041addd com.xamarin.systemtests.watchkitapp.watchkitextension`thread_func(thread_data=0x00000000) + 125 at sgen-thread-pool.c:118
    frame #5: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#6: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#7: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

* thread xamarin#6: tid = 0x1e181a4, 0x054353c6 libsystem_kernel.dylib`__write + 10, name = 'tid_2403'
    frame #0: 0x054353c6 libsystem_kernel.dylib`__write + 10
  * frame #1: 0x00398113 com.xamarin.systemtests.watchkitapp.watchkitextension`selector_thread_wakeup + 67 at threadpool-ms-io.c:149
    frame #2: 0x00398251 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_threadpool_ms_io_remove_socket(fd=20) + 113 at threadpool-ms-io.c:620
    frame #3: 0x0038f466 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Net_Sockets_Socket_Close_internal(sock=20, error=0xb0298b7c) + 38 at socket-io.c:692
    frame #4: 0x13745fc4
    frame #5: 0x13745df0
    frame xamarin#6: 0x13737795
    frame xamarin#7: 0x13745a8c
    frame xamarin#8: 0x13745a24
    frame xamarin#9: 0x137459e3
    frame xamarin#10: 0x137458f0
    frame xamarin#11: 0x13e33c0b
    frame xamarin#12: 0x13455c3c
    frame xamarin#13: 0x002a45e8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_gc_run_finalize(obj=0x1396cb60, data=0x00000000) + 1384 at gc.c:256
    frame xamarin#14: 0x00379fa4 com.xamarin.systemtests.watchkitapp.watchkitextension`sgen_client_run_finalize(obj=0x1396cb60) + 36 at sgen-mono.c:492
    frame xamarin#15: 0x003e121e com.xamarin.systemtests.watchkitapp.watchkitextension`sgen_gc_invoke_finalizers + 382 at sgen-gc.c:2455
    frame xamarin#16: 0x00379fbb com.xamarin.systemtests.watchkitapp.watchkitextension`mono_gc_invoke_finalizers + 11 at sgen-mono.c:498
    frame xamarin#17: 0x002a5f4a com.xamarin.systemtests.watchkitapp.watchkitextension`finalizer_thread(unused=0x00000000) + 442 at gc.c:739
    frame xamarin#18: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7bf07420) + 723 at threads.c:717
    frame xamarin#19: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7bf07420) + 34 at threads.c:764
    frame xamarin#20: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5e3e8) + 583 at mono-threads-posix.c:92
    frame xamarin#21: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#22: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#23: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#7: tid = 0x1e181b5, 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x053f952d libsystem_pthread.dylib`_pthread_wqthread + 1289
    frame #2: 0x053f6f72 libsystem_pthread.dylib`start_wqthread + 34

  thread xamarin#8: tid = 0x1e181b6, 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x05433d76 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x053f952d libsystem_pthread.dylib`_pthread_wqthread + 1289
    frame #2: 0x053f6f72 libsystem_pthread.dylib`start_wqthread + 34

  thread xamarin#9: tid = 0x1e181d2, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_2f0f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00464538 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x00564b74, mutex=0x00564b48, timeout_ms=100) + 264 at mono-os-mutex.h:134
    frame #4: 0x004641ef com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x00564b74, mutex=0x00564b48, timeout_ms=100) + 63 at mono-coop-mutex.h:107
    frame #5: 0x00462dd5 com.xamarin.systemtests.watchkitapp.watchkitextension`sleep_interruptable(ms=100, alerted=0xb02bae2c) + 421 at mono-threads.c:1155
    frame xamarin#6: 0x00462a8b com.xamarin.systemtests.watchkitapp.watchkitextension`mono_thread_info_sleep(ms=100, alerted=0xb02bae2c) + 139 at mono-threads.c:1187
    frame xamarin#7: 0x003a0567 com.xamarin.systemtests.watchkitapp.watchkitextension`monitor_thread + 295 at threadpool-ms.c:887
    frame xamarin#8: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d33d9f0) + 723 at threads.c:717
    frame xamarin#9: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d33d9f0) + 34 at threads.c:764
    frame xamarin#10: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5d1a8) + 583 at mono-threads-posix.c:92
    frame xamarin#11: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#12: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#13: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#10: tid = 0x1e181d3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_300f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=18478) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=18478) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7be244b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7be244b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5d148) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#11: tid = 0x1e181d6, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_370b'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=23036) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=23036) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d0222a0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d0222a0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0520738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#12: tid = 0x1e1828f, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_400f'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x00425118 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7f0b2eec, mutex=0x7f0b2ec0, timeout_ms=89999) + 264 at mono-os-mutex.h:134
    frame #4: 0x00424e12 com.xamarin.systemtests.watchkitapp.watchkitextension`_wapi_handle_timedwait_signal_handle(handle=0x0000010d, timeout=89999, alertable=1, poll=0, alerted=0xb072494c) + 802 at handles.c:1554
    frame #5: 0x00443387 com.xamarin.systemtests.watchkitapp.watchkitextension`wapi_WaitForSingleObjectEx(handle=0x0000010d, timeout=89999, alertable=1) + 1127 at wait.c:173
    frame xamarin#6: 0x003a51a1 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_wait_uninterrupted(thread=0x123266a0, multiple=0, numhandles=1, handles=0xb0724a34, waitall=0, ms=89999, alertable=1) + 225 at threads.c:1518
    frame xamarin#7: 0x003a55a2 com.xamarin.systemtests.watchkitapp.watchkitextension`ves_icall_System_Threading_WaitHandle_WaitOne_internal(this_obj=0x115f1b00, handle=0x0000010d, ms=89999, exitContext=0) + 162 at threads.c:1652
    frame xamarin#8: 0x137f06cc
    frame xamarin#9: 0x137f0594
    frame xamarin#10: 0x137f0382
    frame xamarin#11: 0x1376c06e
    frame xamarin#12: 0x1376af7b
    frame xamarin#13: 0x1344d8b8
    frame xamarin#14: 0x1344d36c
    frame xamarin#15: 0x1376a9d0
    frame xamarin#16: 0x1376a8f8
    frame xamarin#17: 0x1376a883
    frame xamarin#18: 0x001d1365 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_runtime_invoke(method=0x7f18c1f0, obj=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 1349 at mini-runtime.c:2556
    frame xamarin#19: 0x003327d0 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_invoke(method=0x7f18c1f0, obj=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 224 at object.c:2897
    frame xamarin#20: 0x00339b7f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_runtime_delegate_invoke(delegate=0x115f1c70, params=0xb0724ec0, exc=0x00000000) + 175 at object.c:3657
    frame xamarin#21: 0x003ab807 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d26a5f0) + 855 at threads.c:723
    frame xamarin#22: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d26a5f0) + 34 at threads.c:764
    frame xamarin#23: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5b248) + 583 at mono-threads-posix.c:92
    frame xamarin#24: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#25: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#26: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#13: tid = 0x1e190a8, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_5593'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=59668) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=59668) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d36b470) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d36b470) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0622738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#14: tid = 0x1e19492, 0x0543373e libsystem_kernel.dylib`__select + 10, name = 'tid_1c07'
    frame #0: 0x0543373e libsystem_kernel.dylib`__select + 10
    frame #1: 0x00458e30 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_poll(ufds=<unavailable>, nfds=14, timeout=<unavailable>) + 416 at mono-poll.c:83
    frame #2: 0x00399788 com.xamarin.systemtests.watchkitapp.watchkitextension`poll_event_wait(callback=(com.xamarin.systemtests.watchkitapp.watchkitextension`wait_callback at threadpool-ms-io.c:247), user_data=0x7d27edd0) + 152 at threadpool-ms-io-poll.c:152
    frame #3: 0x00398eb8 com.xamarin.systemtests.watchkitapp.watchkitextension`selector_thread(data=0x00000000) + 2104 at threadpool-ms-io.c:413
    frame #4: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d27f390) + 723 at threads.c:717
    frame #5: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d27f390) + 34 at threads.c:764
    frame xamarin#6: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xbff5c4a8) + 583 at mono-threads-posix.c:92
    frame xamarin#7: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#8: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#9: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#15: tid = 0x1e1949d, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_42cf'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=25061) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=25061) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d2783b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d2783b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0826738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#16: tid = 0x1e194a2, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_4337'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=58904) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=58904) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d2792b0) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d2792b0) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb00b4648) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#17: tid = 0x1e194a3, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_5d0b'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=44800) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=44800) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d279930) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d279930) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0520738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34

  thread xamarin#18: tid = 0x1e194a4, 0x0044a69d com.xamarin.systemtests.watchkitapp.watchkitextension`get_hazardous_pointer(pp=0x7be4324c, hp=0x11536384, hazard_index=1) + 381 at hazard-pointer.c:215, name = 'tid_4fa3'
    frame #0: 0x0044a69d com.xamarin.systemtests.watchkitapp.watchkitextension`get_hazardous_pointer(pp=0x7be4324c, hp=0x11536384, hazard_index=1) + 381 at hazard-pointer.c:215
    frame #1: 0x002c6752 com.xamarin.systemtests.watchkitapp.watchkitextension`jit_info_table_chunk_index(chunk=0x7be43200, hp=0x11536384, addr=0x13761be0) + 130 at jit-info.c:200
    frame #2: 0x002c54b2 com.xamarin.systemtests.watchkitapp.watchkitextension`jit_info_table_find(table=0x7f29de00, hp=0x11536384, addr=0x13761be0) + 178 at jit-info.c:222
    frame #3: 0x002c5255 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_jit_info_table_find_internal(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                                 P?O???D$\x04\x93\x88", try_aot=1, allow_trampolines=1) + 133 at jit-info.c:293
    frame #4: 0x001bacf6 com.xamarin.systemtests.watchkitapp.watchkitextension`mini_jit_info_table_find_ext(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                            P?O???D$\x04\x93\x88", allow_trampolines=1, out_domain=0x00000000) + 102 at mini-exceptions.c:1020
    frame #5: 0x001b95d2 com.xamarin.systemtests.watchkitapp.watchkitextension`mini_jit_info_table_find(domain=0x7be07e70, addr="\x8bE??
                                                                                                                                        P?O???D$\x04\x93\x88", out_domain=0x00000000) + 66 at mini-exceptions.c:1058
    frame xamarin#6: 0x001d9b3b com.xamarin.systemtests.watchkitapp.watchkitextension`common_call_trampoline_inner(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                          P?O???D$\x04\x93\x88", m=0x7f17d830, vt=0x00000000, vtable_slot=0x00000000) + 5147 at mini-trampolines.c:784
    frame xamarin#7: 0x001d5e1b com.xamarin.systemtests.watchkitapp.watchkitextension`common_call_trampoline(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                    P?O???D$\x04\x93\x88", m=0x7f17d830, vt=0x00000000, vtable_slot=0x00000000) + 91 at mini-trampolines.c:808
    frame xamarin#8: 0x001d5db7 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_magic_trampoline(regs=0xb0c2e860, code="\x8bE??
                                                                                                                                   P?O???D$\x04\x93\x88", arg=0x7f17d830, tramp=0x00000000) + 103 at mini-trampolines.c:823
    frame xamarin#9: 0x11526188

  thread xamarin#19: tid = 0x1e194a5, 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'tid_4717'
    frame #0: 0x05433402 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x053f9f6b libsystem_pthread.dylib`_pthread_cond_wait + 757
    frame #2: 0x053fdd0c libsystem_pthread.dylib`pthread_cond_timedwait$UNIX2003 + 71
    frame #3: 0x003a25b8 com.xamarin.systemtests.watchkitapp.watchkitextension`mono_os_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=22144) + 264 at mono-os-mutex.h:134
    frame #4: 0x003a248f com.xamarin.systemtests.watchkitapp.watchkitextension`mono_coop_cond_timedwait(cond=0x7d33d150, mutex=0x7d33d16c, timeout_ms=22144) + 63 at mono-coop-mutex.h:107
    frame #5: 0x003a2260 com.xamarin.systemtests.watchkitapp.watchkitextension`worker_park + 576 at threadpool-ms.c:525
    frame xamarin#6: 0x003a14af com.xamarin.systemtests.watchkitapp.watchkitextension`worker_thread(data=0x00000000) + 1199 at threadpool-ms.c:615
    frame xamarin#7: 0x003ab783 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper_internal(data=0x7d369d60) + 723 at threads.c:717
    frame xamarin#8: 0x003ab4a2 com.xamarin.systemtests.watchkitapp.watchkitextension`start_wrapper(data=0x7d369d60) + 34 at threads.c:764
    frame xamarin#9: 0x0045d477 com.xamarin.systemtests.watchkitapp.watchkitextension`inner_start_thread(arg=0xb0a2a738) + 583 at mono-threads-posix.c:92
    frame xamarin#10: 0x053f9a26 libsystem_pthread.dylib`_pthread_body + 138
    frame xamarin#11: 0x053f999c libsystem_pthread.dylib`_pthread_start + 155
    frame xamarin#12: 0x053f6f96 libsystem_pthread.dylib`thread_start + 34
spouliot added a commit that referenced this pull request Aug 5, 2016
rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios Oct 24, 2016
…rebuilds" (xamarin#1018)

Duration before: 1,60s
Duration after:  1,54s
Difference:     -0,06s = -3,8%

The memory usage is almost identical (down 21kb of a total of ~540mb), but the
number of method calls fell significantly:

Method calls before: 86.720.379
Method calls after:  74.390.061
Difference:         -12.330.318 = -14,2%

In the method call summary the call to GetSystemVoidType is #2 before (1072
calls taking 1429ms), after the fix it's way down the list, only called once.
rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios Oct 24, 2016
Duration before: 1,60s
Duration after:  1,54s
Difference:     -0,06s = -3,8%

Memory usage hardly changed (-21 kb of 540 MB), but the number of method calls
shrunk significantly.

Method calls before: 86.720.379
Method calls after:  74.390.061
Difference:         -12.330.318 = -14,2%

The call to `GetSystemVoidType` was #2 on the list of method calls (whens
sorted by 'self'), called 1072 times taking 1429 ms each time. After this
change it's only called once (and obviously pushed way down the list).
spouliot pushed a commit that referenced this pull request Oct 28, 2016
Duration before: 1,60s
Duration after:  1,54s
Difference:     -0,06s = -3,8%

Memory usage hardly changed (-21 kb of 540 MB), but the number of method calls
shrunk significantly.

Method calls before: 86.720.379
Method calls after:  74.390.061
Difference:         -12.330.318 = -14,2%

The call to `GetSystemVoidType` was #2 on the list of method calls (whens
sorted by 'self'), called 1072 times taking 1429 ms each time. After this
change it's only called once (and obviously pushed way down the list).
rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios Jun 10, 2017
Set the min deployment target to 7.0 for a test to make sure ibtool doesn't
complain, and fix the list of expected bundle resources by adding Assets.car
to the list.

Fixes the following failures:

1. Xamarin.iOS.Tasks.TargetTests.BuildExecutable :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

2. Xamarin.iOS.Tasks.TargetTests.BundleResources :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

3. Xamarin.iOS.Tasks.TargetTests.CleanExecutable :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

4. Xamarin.iOS.Tasks.TargetTests.CopyContentToBundle :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

5. Xamarin.iOS.Tasks.TargetTests.Disappearing_Bundle_Resource :   #2

      Expected: True
      But was:  False

6. Xamarin.iOS.Tasks.TargetTests.Disappearing_Content :   #2

      Expected: True
      But was:  False

7. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_DefaultValue :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

8. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_False :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

9. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_True :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

10. Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_NoModifications :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

11. Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_TouchLibraryDll :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

12. Xamarin.iOS.Tasks.TargetTests.UnpackLibraryResources_ExecutableProject :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2
rolfbjarne added a commit that referenced this pull request Jun 10, 2017
Set the min deployment target to 7.0 for a test to make sure ibtool doesn't
complain, and fix the list of expected bundle resources by adding Assets.car
to the list.

Fixes the following failures:

1. Xamarin.iOS.Tasks.TargetTests.BuildExecutable :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

2. Xamarin.iOS.Tasks.TargetTests.BundleResources :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

3. Xamarin.iOS.Tasks.TargetTests.CleanExecutable :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

4. Xamarin.iOS.Tasks.TargetTests.CopyContentToBundle :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

5. Xamarin.iOS.Tasks.TargetTests.Disappearing_Bundle_Resource :   #2

      Expected: True
      But was:  False

6. Xamarin.iOS.Tasks.TargetTests.Disappearing_Content :   #2

      Expected: True
      But was:  False

7. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_DefaultValue :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

8. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_False :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

9. Xamarin.iOS.Tasks.TargetTests.OptimizePngs_True :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

10. Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_NoModifications :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

11. Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_TouchLibraryDll :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2

12. Xamarin.iOS.Tasks.TargetTests.UnpackLibraryResources_ExecutableProject :   #RunTarget-ErrorCount

    	ibtool exited with code 1
    	Compiling IB documents for earlier than iOS 7 is no longer supported.
      Expected: 0
      But was:  2
rolfbjarne referenced this pull request in rolfbjarne/xamarin-macios Nov 24, 2017
commit xamarin/maccore@14c3eca
Author: Rolf Bjarne Kvinge <[email protected]>
Date:   Fri Nov 24 09:53:13 2017 +0100

    Bump mac-api-docs.

    commit xamarin/mac-api-docs@057bb83
    Author: Timothy Risi <[email protected]>
    Date:   Thu Nov 23 23:52:21 2017 -0900

        Docs should also be generated for Xamarin.Mac (#2)

        * Docs should also be generated for Xamarin.Mac

        * Remove the push target
rolfbjarne added a commit that referenced this pull request Nov 24, 2017
commit xamarin/maccore@14c3eca
Author: Rolf Bjarne Kvinge <[email protected]>
Date:   Fri Nov 24 09:53:13 2017 +0100

    Bump mac-api-docs.

    commit xamarin/mac-api-docs@057bb83
    Author: Timothy Risi <[email protected]>
    Date:   Thu Nov 23 23:52:21 2017 -0900

        Docs should also be generated for Xamarin.Mac (#2)

        * Docs should also be generated for Xamarin.Mac

        * Remove the push target
rolfbjarne added a commit that referenced this pull request Feb 7, 2019
* [linker] Remove non-bitcode compatible code, and show a warning.

Remove code not currently compatible with bitcode and replace it with an
exception instead (otherwise we'll assert at runtime).

Also show a warning when we detect this.

This is quite helpful when looking at watch device test runs to filter out
failures we already know about.

This fixes point #2 in #4763.

* Improve documentation.

* Simplify linker code by using a substep.

* Fix whitespace issues.

* Improve reporting.

* Add support for reporting more than one MT2105 at the same time when making
  the errors instead of warnings.
* Only report MT2105 for methods that haven't been linked away.
* Format the error message nicer for properties.

* Tweak a bit for warning tests to pass.

* Use ExceptionalSubStep to provide better error information.

* Adjust where linker warnings/errors are reported from to avoid a NullReferenceException.
rolfbjarne added a commit that referenced this pull request Feb 26, 2019
* [linker] Remove non-bitcode compatible code, and show a warning.

Remove code not currently compatible with bitcode and replace it with an
exception instead (otherwise we'll assert at runtime).

Also show a warning when we detect this.

This is quite helpful when looking at watch device test runs to filter out
failures we already know about.

This fixes point #2 in #4763.

* Improve documentation.

* Simplify linker code by using a substep.

* Fix whitespace issues.

* Improve reporting.

* Add support for reporting more than one MT2105 at the same time when making
  the errors instead of warnings.
* Only report MT2105 for methods that haven't been linked away.
* Format the error message nicer for properties.

* Tweak a bit for warning tests to pass.

* Use ExceptionalSubStep to provide better error information.

* Adjust where linker warnings/errors are reported from to avoid a NullReferenceException.
rolfbjarne added a commit that referenced this pull request Feb 26, 2019
rolfbjarne added a commit that referenced this pull request Feb 11, 2020
… project. (#7842)

Fixes:

> MyWatchKit2IntentsExtension/IntentHandler.cs(36): warning MT4174: Unable to locate the block to delegate conversion method for the method MyWatchKit2IntentsExtension.IntentHandler.ResolveRecipients's parameter #2. [MyWatchKit2Extension/MyWatchKit2Extension.csproj]

The method signature probably changed from a beta release to the corresponding
stable release, and this method was never updated.
rolfbjarne added a commit that referenced this pull request Aug 28, 2020
…line.

Fixes this startup crash in link all:

    2020-08-26 19:56:03.936330+0200 link all[45665:6121665] Could not register the assembly 'link all': ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeParameters()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.get_Signature()
       at Registrar.Registrar.ObjCMethod.get_Trampoline()
       at Registrar.DynamicRegistrar.RegisterMethod(ObjCMethod method)
       at Registrar.DynamicRegistrar.OnRegisterType(ObjCType type)
       at Registrar.Registrar.RegisterTypeUnsafe(Type type, List`1& exceptions)
       at Registrar.Registrar.RegisterAssembly(Assembly assembly)
    2020-08-26 19:56:03.939327+0200 link all[45665:6121665] System.AggregateException: One or more errors occurred. (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.) (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.) (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.)
     ---> ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeReturnType()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.ValidateSignature(List`1& exceptions)
       --- End of inner exception stack trace ---
     ---> (Inner Exception #1) ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeReturnType()
       at Registrar.Registrar.VerifyInSdk(List`1& exceptions, ObjCMethod method)
       at Registrar.Registrar.ObjCType.Add(ObjCMethod method, List`1& exceptions)
       at Registrar.Registrar.RegisterTypeUnsafe(Type type, List`1& exceptions)<---

     ---> (Inner Exception #2) ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeParameters()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.ValidateSignature(List`1& exceptions)<---

    =================================================================
    	Native Crash Reporting
    =================================================================
    Got a abrt while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries
    used by your application.
    =================================================================

    =================================================================
    	Native stacktrace:
    =================================================================
    	0x10d57eb0e - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_dump_native_crash_info
    	0x10d52b437 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_native_crash
    	0x10d57e365 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : sigabrt_signal_handler
    	0x7fff51c005fd - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libsystem_platform.dylib : _sigtramp
    	0x0 - Unknown
    	0x7fff51af0b7c - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libsystem_c.dylib : abort
    	0x10d32478f - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_unhandled_exception_handler
    	0x10d5eef68 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_invoke_unhandled_exception_hook
    	0x10d52ade0 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_exception_internal
    	0x10d5296c1 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_exception
    	0x10d579582 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_amd64_throw_exception
    	0x10d91b5b0 - Unknown
    	0x10d3244eb - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_process_managed_exception
    	0x10d324367 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_process_managed_exception_gchandle
    	0x10d336851 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_main
    	0x10d217ced - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/link all : main
    	0x7fff51a231fd - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libdyld.dylib : start
rolfbjarne added a commit that referenced this pull request Aug 28, 2020
…line. (#9537)

This also means:

* Adding the ExceptionalSubStep step to the build.
* Adding a few workarounds for missing/different linker API.

This fixes this startup crash in link all:

    2020-08-26 19:56:03.936330+0200 link all[45665:6121665] Could not register the assembly 'link all': ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeParameters()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.get_Signature()
       at Registrar.Registrar.ObjCMethod.get_Trampoline()
       at Registrar.DynamicRegistrar.RegisterMethod(ObjCMethod method)
       at Registrar.DynamicRegistrar.OnRegisterType(ObjCType type)
       at Registrar.Registrar.RegisterTypeUnsafe(Type type, List`1& exceptions)
       at Registrar.Registrar.RegisterAssembly(Assembly assembly)
    2020-08-26 19:56:03.939327+0200 link all[45665:6121665] System.AggregateException: One or more errors occurred. (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.) (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.) (The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.)
     ---> ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeReturnType()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.ValidateSignature(List`1& exceptions)
       --- End of inner exception stack trace ---
     ---> (Inner Exception #1) ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the return value in the method LinkAll.Attributes.SmartConsumer.GetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeReturnType()
       at Registrar.Registrar.VerifyInSdk(List`1& exceptions, ObjCMethod method)
       at Registrar.Registrar.ObjCType.Add(ObjCMethod method, List`1& exceptions)
       at Registrar.Registrar.RegisterTypeUnsafe(Type type, List`1& exceptions)<---

     ---> (Inner Exception #2) ObjCRuntime.RuntimeException: The registrar can't convert from 'LinkAll.Attributes.SmartEnum' to 'Foundation.NSString' for the parameter 'value' in the method LinkAll.Attributes.SmartConsumer.SetSmartEnumValue.
       at Registrar.Registrar.ObjCMethod.get_NativeParameters()
       at Registrar.Registrar.ComputeSignature(Type DeclaringType, MethodBase Method, ObjCMember member, Boolean isCategoryInstance, Boolean isBlockSignature)
       at Registrar.Registrar.ObjCMethod.ComputeSignature()
       at Registrar.Registrar.ObjCMethod.ValidateSignature(List`1& exceptions)<---

    =================================================================
      Native Crash Reporting
    =================================================================
    Got a abrt while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries
    used by your application.
    =================================================================

    =================================================================
      Native stacktrace:
    =================================================================
      0x10d57eb0e - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_dump_native_crash_info
      0x10d52b437 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_native_crash
      0x10d57e365 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : sigabrt_signal_handler
      0x7fff51c005fd - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libsystem_platform.dylib : _sigtramp
      0x0 - Unknown
      0x7fff51af0b7c - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libsystem_c.dylib : abort
      0x10d32478f - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_unhandled_exception_handler
      0x10d5eef68 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_invoke_unhandled_exception_hook
      0x10d52ade0 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_exception_internal
      0x10d5296c1 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_handle_exception
      0x10d579582 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libmonosgen-2.0.dylib : mono_amd64_throw_exception
      0x10d91b5b0 - Unknown
      0x10d3244eb - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_process_managed_exception
      0x10d324367 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_process_managed_exception_gchandle
      0x10d336851 - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/libxamarin-debug.dylib : xamarin_main
      0x10d217ced - /Users/rolf/Library/Developer/CoreSimulator/Devices/289E372A-501C-4499-A1A6-59C5B3B6A9AE/data/Containers/Bundle/Application/5CB344E3-EC61-4720-92E6-4C8B91A67A85/link all.app/link all : main
      0x7fff51a231fd - /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libdyld.dylib : start
mjbond-msft added a commit to mjbond-msft/xamarin-macios that referenced this pull request Dec 9, 2020
spouliot added a commit that referenced this pull request Jan 11, 2021
…10309)

**Example #1.** Signing a framework binary is the **same** thing as
signing the framework directory.

```
$ codesign -v --force --timestamp=none --sign - bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework/lame
bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework/lame: replacing existing signature
bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework/lame: signed bundle with Mach-O thin (arm64) [io.sourceforge.lame]

$ codesign -v --force --timestamp=none --sign - bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework
bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework: replacing existing signature
bin/iPhone/Release/xcf_ios.app//Frameworks/lame.framework: signed bundle with Mach-O thin (arm64) [io.sourceforge.lame]
```

Nice right ? Pretty much until...

**Example #2.** Signing a framework binary is **NOT** the **same** thing
as signing the framework directory.

```
$ codesign -v --force --timestamp=none --sign - bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework/flac
bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework/flac: replacing existing signature
bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework/flac: signed Mach-O thin (arm64) [flac-55554944583d2f02282c33d8bfed082daa857e30]

$ codesign -v --force --timestamp=none --sign - bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework
bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework: replacing existing signature
bin/iPhone/Release/xcf_ios.app//Frameworks/flac.framework: signed bundle with Mach-O thin (arm64) [org.xiph.flac]
```

In this case signing the binary `flac` does not produce the
`_CodeSignature` directory and fails our msbuild Codesign task

The fix is to detect if we're signing a framework like `A.framework/A`
and change this to sign `A.framework` as this will always work.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants