After linking many shaders successfully, glLinkProgram fails on a successfully compiled shader on an Android device.

It doesn't look like I've hit the uniform or varying vector limit, so I'm wondering how to figure out why the link failed.

The glGetProgramInfoLog is only reports "Link was successful." or "Link failed."

Removing shaders helps, but I need to know why. What accumulated resource could I be using up?