You don't seem to call mvMatrixPop, but it doesn't probably matter that much though. Also, I'm not sure if GLSL 3.3 core likes keywords "attribute" and "varying" because those are deprecated, use "in" and "out" instead. You should also use glGetProgram and glGetProgramInfoLog for grabbing some information about the shader program.
You could also try running the application in gDebugger, it's an awesome program for debugging OpenGL applications.
Thanks! No I used mvMatrixPop in a more complex example, that after those problem I've shrinked to this one.
glGetProgramInfoLog is called inside
LoadShaders( "vs.vertexshader", "fs.fragmentshader" );
that I haven't post it here because found on online tutorial. And everything (compiling and linking) it's fine with shaders
I also used gDebugger but I haven't found out the problem