A question about NURBS

I imitate some sample code to write a NURBS program. It can work well when there is not so much control points, like 24 * 15. But when the control points’ number come to 25 * 15, it can’t display anything? plz help me, thx. The code like this:

gluBeginSurface(theNurb);

GLfloat *knots = (GLfloat *)malloc(rows * 2 * sizeof(GLfloat));
GLfloat *it = knots;
for (i = 0;i < rows;i++)
*(it++) = 0.0;
for (i = 0;i < rows;i++)
*(it++) = 1.0;

GLfloat *knots1 = (GLfloat *)malloc(cols * 2 * sizeof(GLfloat));
GLfloat *it = knots1;
for (i = 0;i < cols;i++)
*(it++) = 0.0;
for (i = 0;i < cols;i++)
*(it++) = 1.0;

gluNurbsSurface(theNurb,
rows * 2, knots,
cols * 2, knots1,
cols * 3,
3,
ctlpoint,
rows, cols,
GL_MAP2_VERTEX_3);

gluEndSurface(theNurb);

//when rows more then 24, it will have problem.

btw: i want to know how to use gluNurbsCallback() to get the error msg. thx a lot.