Running a simple, single-task playbook on macOS 10.15 returned this error:
$ ansible-playbook a.yml
objc[66286]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
objc[66286]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
ERROR! A worker was found in a dead state
Turns out macOS 10.13 onward started enforcing stricter rules on fork()
-safety. To get the older, unsafe behaviour (temporarily) back, use this environment variable:
$ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES ansible-playbook a.yml
Here's a detailed writeup on this, with a focus on Ruby servers.