One of the recent iOS updates has seen the appearance of some unexpected behaviour with MidiBus library powered apps (although other non MidiBus apps are affected also).
The problem occurs on newer version of iOS 9 (and 10 we think) where music apps crash on startup (or running) when the iDevice is connected to a wifi network, but this network is not connected to the Internet. This would be a common scenario in a live situation.
Technically what is happening is that the app is trying to resolve a host using DNS on the main thread. This will time out (this is normal behaviour), but the recent iOS versions do not like the amount of time the main thread is sitting waiting for a response and believe the app has hung and simply terminate it without warning.
The MidiBus library has been patched to address this and developers who use the MidiBus library are encouraged to build against v1.37 (or higher) - currently 1.37 is a pre-release but is working fine. Developers not using the MidiBus library should ensure that all calls to functions that do DNS lookups (eg. gethostbyname()) are called from a background thread.
One workaround is to run up all the apps first while connected to a network that has Internet connectivity so they can do their lookups and leave them running before the gig. The iDevice will then cache (for a limited time) those lookups and the apps will not crash. However, once the cache is cleared (not sure how long) then any app that makes a DNS lookup will crash again. NB. (pre 1.37) MidiBus powered apps will only do the lookup at app start so should not crash subsequently even after the DNS cache is cleared.
Thanks for figuring this out. This really bit me hard at a gig last month (first time I took my Ableton LINK / Apple AirPort Express rig into the wild, with no internet).
Why do all these music apps need to phone home and connect to the internet anyways? Seems like you should be able to turn this off (like the option "Do you want to send anonymous usage statistics?"). Maybe not a "privacy issue" but something like that, unknowingly phoning home.
Well I can only speak for the MidiBus library apps, but it isn't really 'phoning home' to spy on you.
When the app starts, it checks to see whether there is an update to the OMAC registry (used for app switching and port cleaning) by doing a dns lookup. If the dns number returned is greater than the current version installed, it then fetches an update and only then. The idea is that a dns lookup is around 50 bytes and cached all over the internet so an app does not need to go and make a full server query to check for an update.
This check was always on a background thread until about a year ago to get round a problem with the swift programming language. That didn't seem to have caused any woes until recently with an iOS9 update.
However, any app that uses an analytics product will be collecting stuff, no doubt about it...