I struggled many hours recently with subroutines and I didn't manage to make them ok under OS X with a GeForce GPU.
I added a new simple demo that shows a pqtorus rendered three times, each time with a different subroutine (texture, phong, phong+texture).
The demo is available in the code sample pack
The latest GLSL Hacker 0.7.2.0
The demo works fine on Windows. On OS X, the demo works fine for Intel and AMD GPUs but not for NVIDIA GPUs. With the GT650M / OSX, the same subroutine is used to shade all meshes and that's the bug. I suspect a bug on OSX with GeForce GPUs because the demo works fine everywhere else. But since it's a NVIDIA related issue, my code can be also guilty...
OK - NVIDIA GeForce GTX 660 - R337.50 - Win7 64-bit
OK - Intel HD 4000 - OS X 10.9
OK - AMD Radeon HD 6870 - OS X 10.9 (Hackintosh)
ERROR - NVIDIA GeForce GT 650M (Macbook Retina Mid-2012) - OS X 10.9