GLFW windowContext quit nvoglv32.dll persisting

I’ve got a project that’s been using OpenGL C++ with glfw and I recently figured out how to make my program use it’s Nvidia card by default instead of built in graphics card (it has optimus so it default to the built-in chip). This however has caused my program to always leave an Nvidia thread (nvoglv32.dll) running when I’ve returned from main.

I’ve called glfw terminate and terminated all other threads. The problem only occurs if I use glfwOpenWindow with 8 bits for rgb and any value for the other fields (tried changing those a lot to test possible context errors). I set my program to terminate right after window creation and it still hangs on the nvidia thread (I can see it in processor explorer and it’s the only live thread) and refuses to end the program until I force quit the debug mode. Actually running my program produces the same result once I quit via closing the window or my quit key. This problem does not occur in my glut programs using the nvidia card. I’ve also both updated to the most recent nvidia driver for my card (Geforce GT 330M) and tried rolling back to an older driver with no luck.

I’m using Windows7 64bit with visual studio 2008. I really like glfw over it’s alternatives, but I can’t find what would cause this bug despite a few days of internet searching and program testing. If someone has an idea for how to get the nvidia thread to correctly terminate after my main thread returns it’d be greatly appreciated.

Only thing I can suggest would be to get the GLUT and GLFW sources, knock up a stripped down test program to init/terminate and proceed from there.