XFree86 crash using PBuffers
I have a nforce 420D system running a Linux 2.4.x kernel and XFree86 4.2.x. I have a large OpenGL app which runs just fine. I run the X server at 1280x1024, 32 (or 24) bit. My app runs in a 640x480 window. I am creating a 640x480 PBuffer like this:
config = glXChooseFBConfig(...);
glxCreatePBuffer(..., config, ...);
The attrs I am passing to chooseFBConfig are causing it to return a single config, one that is compatible with the display window. When I do a queryDrawable on this pbuffer, it tells me that it is indeed a 640x480 buffer.
When I attempt to do a glXMakeContextCurrent() on this buffer, the XServer crashes with a segfault.
When I configure the X server for a 640x480 display instead of 1280x1024, everything works fine. On the higher res mode, if I create a 256x256 PBuffer, everything also works fine. A slightly larger PBuffer (300x300) crashes.
If you assume that the entire display is 32 bits, is doublebuffered and has a 32 bit zbuffer, then a 1280x1024 display uses around 15MB. A 256x256 pbuffer would use just under 1MB. A 300x300 pbuffer would push memory usage just over 16MB.
Looking at the X server's log and at the bios, it looks like there is 32MB allocated to the graphics chip. So it kind of seems like the system thinks there is 32MB of graphics memory but there is actually only 16MB.
Has anyone seen anything like this? I have looked around to try to find places that deal with allocating system memory to the graphics chips, but have found nothing of value. I even tried setting "VideoMem 16384" in my XF86Config file, but that seems to have no effect.