CL_GraphicContext calls the low level graphics provider functions via an interface class (CL_GraphicContextProvider)
For OpenGL, this is CL_OpenGLGraphicContextProvider. This is an internal class, not exposed to the API.
reset_texture() tells OpenGL that we are not using the texture for slot number "unit_index"
For glActiveTexture() to fail, I can think of these reasons:
1) The pointer for "glActiveTexture" (alias to CL_OpenGL::functions->activeTexture ) has been damaged by a bug in your code.
This can be checked by inspecting the pointer before and after the crash
Here is the watch value: I get this value (yours will be different)
2) There is a bug with your graphics card driver. This is unlikely since glActiveTexture has been around since around OpenGL 1.2
(*(CL_OpenGL::functions)).activeTexture 0x61828790 void (unsigned int)*
3) You call reset_texture() in your own destructor after the display window was destroyed. This is unlikely since there is no reason for you to call this function in a destructor.
Have a look at the debugger call stack, it can give lots of clues.