Cuda7.5, freeglut font error on windows

Hello

I have an font render issue with cuda7.5, and freeglut. I use VS2013, CUDA 7.5 Runtime, OpenGl 4.5, Freeglut 2.6, and Anttweakbar 1.16 in my program (and my operting system is windows 8.1 pro).

My program renders an image with help of Cuda, so my cuda kernel is performed inside displayFunc function , that it is the parameter of glutDisplayFunc. Everything works fine so far, but if i use some kind of GLUT bitmap fonts or Anttweakbar TwDraw() function, i get error message for glutReportErrors() after glutSwapBuffers function call:

freeglut < My program location >: GL error: invalid operation

I guess that cuda registers pbo, and freeglut doesn’t like it.
Here is detail of my code:

void displayFunc(void){

 sdkStartTimer(&timer);

 TColor *d_dst = NULL;
 size_t num_bytes;

 checkCudaErrors(cudaGraphicsMapResources(1, &cuda_pbo_resource, 0));
 getLastCudaError("cudaGraphicsMapResources failed");
 checkCudaErrors(cudaGraphicsResourceGetMappedPointer((void **)&d_dst,&num_bytes, cuda_pbo_resource));
 getLastCudaError("cudaGraphicsResourceGetMappedPointer failed");

 checkCudaErrors(CUDA_Bind2TextureArray());

 runImageFilters(d_dst);

 checkCudaErrors(CUDA_UnbindTexture());
 // DEPRECATED: checkCudaErrors(cudaGLUnmapBufferObject(gl_PBO));
 checkCudaErrors(cudaGraphicsUnmapResources(1, &cuda_pbo_resource, 0));

 // Common display code path
 {

    glClear(GL_COLOR_BUFFER_BIT);

    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, imageW, imageH, GL_RGBA, GL_UNSIGNED_BYTE, BUFFER_DATA(0));
    glBegin(GL_TRIANGLES);
    glTexCoord2f(0, 0);
    glVertex2f(-1, -1);
    glTexCoord2f(2, 0);
    glVertex2f(+3, -1);
    glTexCoord2f(0, 2);
    glVertex2f(-1, +3);
    glEnd();
    glFinish();

 }

 TwDraw();

 glutSwapBuffers();
 glutReportErrors();

 sdkStopTimer(&timer);

}

void initOpenGLBuffers(){
 printf("Creating GL texture...\n");

 glEnable(GL_TEXTURE_2D);
 glGenTextures(1, &gl_Tex);
 glBindTexture(GL_TEXTURE_2D, gl_Tex);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, imageW, imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE, h_Src);
 printf("Texture created.\n");

 printf("Creating PBO...\n");

 glGenBuffers(1, &gl_PBO);
 glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, gl_PBO);
 glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, imageW * imageH * 4, h_Src, GL_STREAM_COPY);

 checkCudaErrors(cudaGraphicsGLRegisterBuffer(&cuda_pbo_resource, gl_PBO,cudaGraphicsMapFlagsWriteDiscard));

 GLenum gl_error = glGetError();

 if (gl_error != GL_NO_ERROR)
 {
 //#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
    char tmpStr[512];
    sprintf_s(tmpStr, 255, "\n%s(%i) : GL Error : %s\n\n", __FILE__, __LINE__, gluErrorString(gl_error));
    OutputDebugString(tmpStr);
//#endif
    fprintf(stderr, "GL Error in file '%s' in line %d :\n", __FILE__, __LINE__);
    fprintf(stderr, "%s\n", gluErrorString(gl_error));
    exit(EXIT_FAILURE);
 }

 printf("PBO created.\n");

 // load shader program
 shader = compileASMShader(GL_FRAGMENT_PROGRAM_ARB, shader_code);
}


int main(int argc, char **argv)
{
 char *dump_file = NULL;

 pArgc = &argc;
 pArgv = argv;

 initGL(&argc, argv);

 cudaGLSetGLDevice(gpuGetMaxGflopsDeviceId());

 checkCudaErrors(CUDA_MallocArray(&h_Src, imageW, imageH));

 initOpenGLBuffers();

 printf("Starting GLUT main loop...\n");

 sdkCreateTimer(&timer);
 sdkStartTimer(&timer);

 glutMainLoop();

}