TCC Namespace crash

Hello,

I have Mac application which accesses Sound Input. Hardened run time ha been enabled for this app with Audio Input turned ON, sandbox is disabled. info.plist has entry "Privacy - Microphone Usage Description" with the proper description.

But, few of our users started reporting that they are getting following crash in Catalina. My app has been built using XCode12.5 in BigSur.

Crash: Dispatch queue: com.apple.root.default-qos Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: Namespace TCC, Code 0x0  I have asked them to try resetting Microphone permission using tccutl. But, they are still facing this crash.

How do I trace out why it is crashing and why it has been crashing for few users say 5-6.

Thank you. Regards, Deepa

This for sure something related to privacy violation, the app has to ask user permission to obtain access to Microphone. But, I have added require Privacy Message in info.plist and enabled entitlement as well. I am not the crash is for which permission that app is trying to access.

Is this a standard Mac app? That is, a program that the user runs by double clicking it in the Finder?

And does the app spin up multiple processes? Or is it all contained in a single process?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

  1. We will be providing DMG to the user and user need to drag and drop it to the Applications folder (applications fodler shortcut has been provided in DMG and have guided user to drag and drop it to Applications folder)
  2. The application launches a Helper application using the call SMLoginItemSetEnabled. This helper is required to monitor and switch back to user preferred sound output when our application crashes. Also, this helper is not terminated by setting false to SMLoginItemSetEnabled, if user wants to launch our application on system-login.

Thank you. Regards, Deepa

Thanks for the explanation. That’s a relatively simple case for TCC [1]. As to why it’s failing, my advice is that you try reproducing this on a clean machine that matches the system version of a user reporting this problem (I typically do this using a VM, so I can restore from a snapshot between tests). Does that also fail?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Not the simplest possible case, but way simpler than some of the cases I’ve looked at it.

We could not reproduce it in our system using same system configuration (with fresh OS install as well). Most of these users who had installed had installed beta version of the OS and I am not sure if this is the issue. Also for these users (who are facing crash), my app is not getting listed under Microphone. We asked user to try tccutil reset All and restart the system and re-launch the app. But, still app is not listed under Microphone, nor even permission alert (displayed by OS API to give access to Microphone when we use Audio API) is displayed to these users. It just crashes. What work around can be given to these users? Could you please give suggestion?

What work around can be given to these users?

I don’t have any great advice here. It seems very likely that something is broken on these user machines and debugging that sort of thing is the purview of Apple Support.

One thing you can do is ask the user to try another app, say a free app from the Mac App Store. If that works on a fresh machine but fails on the user’s machine, that’s something they can raise with Apple Support.

ps If you search the ’net for TCC problems you’ll find lots of advice on how to disable SIP and monkey with the TCC database directly. This is not something I’d recommend, because it takes a machine that’s already having problems and moves it further off into the weeds.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

TCC Namespace crash
 
 
Q