That's a lot of code! What platform are you building on? I'd be happy to help dig through it, if I can match your development environment.
Also, any particular reason you've implemented most/all of your methods in models.h instead of a separate models.cpp file? Have you tried running in a debugger and/or adding debug printf/cout statements throughout your code, to track how far it's getting before you hit the SIGSEGV?
Since you only do a GL.Init(), build and draw a glModel instance, and then call GL.Update() and check GL.window.key, can you make copies of your code with everything you -don't- need stripped out (or effectively disabled by surrounding unused blocks with #if 0
and #endif
pairs), and see if the problem persists?