Hi Jules, I've found a situation where the message queue's runLoopSource gets called back recursively. It occurs due to a plugin invoking the runloop when it's state information is loaded (the plugin is the NI Kontakt player). I've attached an image of the stack trace.
Due to this I have a handleAsyncUpdate that appears to get invoked twice in the same effective pass of the run loop, which I don't think should be expected? I dug through apple's run loop docs looking for a way to deal with it but wasn't able to sort anything much out of it. I tested out just using an "in progress" flag in runLoopCallback to stop the recursion which appears to work ok. I can also do this directly in my handleAsyncUpdate easily enough but it's kinda hacky I think.