“7.6 Varying Variables
…
The following built-in varying variables are available to write to in a vertex shader. A particular one should be written to if any functionality in a corresponding fragment shader or fixed pipeline uses it or state derived from it. Otherwise, behavior is undefined.
varying vec4 gl_FrontColor;
varying vec4 gl_BackColor;
…”
The previous generation programmable pipeline extensions initialized the registers to a defined state on each invocation, that’ll be black in your case and if your texture is set to modulate, black*anything gives black.
(It’s a good idea to not use black as glClearColor during development.)