I'm having a problem where I have a clCommandQueue object going invalid. Is there any reason this should happen when none of my code is calling clReleaseCommandQueue?

Some context:
This is an OpenGL based program on SnowLeopard (10.6.1), but I'm not using shared GL objects.
The program renders the data, and then uses OpenCL to calculate the next frame.
If I target the GPU the command queue becomes invalid after 1-2 frames.
If I target the CPU everything works fine.
Adding extra retains on the command queue and context (just for good measure) have no effect.