OpenGL memory leak?
Hi, I'm having trouble attempting to track down a memory leak in OpenGL on the 8.15.10.2559 drivers. I'm writing code that does a lot of texture map uploading, and recycling of texture ids, for an application which is used in digital signage; so naturally, leaking is not acceptable. I believe that the driver is not releasing graphics memory after re-using a texture name, but am having difficulty in tracing down the root cause of the problem. It seems that the problem ONLY occurs on windows 7 (I am testing with 64bit, but my application is 32bit). Furthermore, the usage pattern (i.e. of texture allocation / deallocation) seems to greatly affect how quickly the memory is lost. I do not have this problem with NVidia, or with ATI, nor do I have the problem with other Intel graphics drivers on Windows. Note - the previous versions of the HD2000 driver also exhibited this problem. Linux (all hardware) also does not show this problem. Using Microsoft's umdh, I find that all of my traces start with something akin to this: + 1137408 ( 6864428 - 5727020) 46939 allocs BackTraceFC6BA0 + 20422 ( 46939 - 26517) BackTraceFC6BA0 allocations ntdll!RtlAllocateHeap+00000274 KERNELBASE!GlobalAlloc+0000006E + 228204 ( 526744 - 298540) 4604 allocs BackTraceFC8B34 + 2113 ( 4604 - 2491) BackTraceFC8B34 allocations ntdll!RtlAllocateHeap+00000274 KERNELBASE!GlobalAlloc+0000006E ig4icd32!???+00000000 : 13F3F78D I.e. a large chunk of memory which is lost in GlobalAlloc, and a smaller chunk lost at about a factor of 10 less allocations in the intel opengl driver. Since the code is compiled without frame pointer, I cannot see which functions below GlobalAlloc and ig4icd32 have been called. Is there any way in which I can see what function in ig4icd32 called GlobalAlloc? Does anyone have any good suggestions as to how to investiage this? Thanks in advance, -bms
|