Ok, got this working now.
It turned out to be a pthread problem. In Linux, sending an empty but initialized pthread_attr to pthread_create() was fine. But on Mac I had to set that to NULL. I thought the thread creation was failing because of a kinect init failure, but it turns out that the failed thread creation was causing a producer/consumer problem on the kinect.