The reason for this wait_fences: failed to receive reply:
can also be that you try to show an alert while not being on the mainThread
(which is the GUI thread).
Dispatching to the GUI thread helps:
dispatch_async(dispatch_get_main_queue(), ^{
[mainAlert show];
});