got it!
I am just going to tell you what the problem was, I cannot tell you why it is so, it just is - I am as confused as I can get...
The crash occurs in: GLContext.java, in the getPlatformSpecificFunctionAddress method.
Specifically, it crashes on the line:
String platform_function_name = function.replaceFirst(function_prefix, os_function_prefixes);
HOWEVER (and this is where it gets funny (did I mention it took a looong time to locate?)) it ONLY occurs when locating methods for : NV_vertex_array_range_initNativeFunctionAddresses, specifically:
glFreeMemoryNV, glAllocateMemoryNV and so forth.
The replaceFirst method is meant to replace gl from glFreeMemoryNV with wgl, becomming: wglFreeMemoryNV.
If I manually change the function.replace... line to:
String platform_function_name = "w" + function;
then *everything* works fine
:?:
I am totally, completely at a loss as to what is going on - and I have absolutely no idea why it is happening only when running under GCJ, but *somehow* the GCJ code must act weird in some strange corner cases, or something along those lines. (but only on my computer (nVidia))
So, you're code works fine - except for the ghost in the shell.