Code:
<-- PREVIOUS OUTPUT CUT -->
==16057== Invalid write of size 1
==16057== at 0x4C2292F: memcpy (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x6B51441: (within /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6B4FDE8: lnxioCmdBufSubmit(IODrvConnHandleTypeRec*, unsigned, unsigned, unsigned, unsigned, IOSubmitInfoOutRec&) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A1184F: ioCmdBufSubmit2(void*, IOSubmitInfoInRec const*, IOSubmitInfoOutRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69D1CF5: (within /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69D17E7: coraSubmitCommandBuffer(gsl::gsCtx*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69D0588: gsl::gsCtx::Flush() (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69D0865: gslFlush(gslCommandStreamRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A06C58: gscxFlush(gslCommandStreamRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x66AB74B: wpWindowSurface::copySwap(bool) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x66AC0B7: wpWindowSurface::copyToScreen(bool) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x66AC735: wpWindowSurface::swapBuffers() (in /usr/lib64/dri/fglrx_dri.so)
==16057== Address 0x2B49FD3ACB88 is not stack'd, malloc'd or (recently) free'd
176 frames in 5.0 seconds = 35.052 FPS
204 frames in 5.0 seconds = 40.628 FPS
206 frames in 5.0 seconds = 41.055 FPS
202 frames in 5.0 seconds = 40.244 FPS
==16057==
==16057== More than 10000000 total errors detected. I'm not reporting any more.
==16057== Final error counts will be inaccurate. Go fix your program!
==16057== Rerun with --error-limit=no to disable this cutoff. Note
==16057== that errors may occur in your program without prior warning from
==16057== Valgrind, because errors are no longer being displayed.
==16057==
==16057== Warning: set address range perms: large range 134217728 (noaccess)
==16057==
==16057== ERROR SUMMARY: 10000000 errors from 51 contexts (suppressed: 18 from 1)
==16057== malloc/free: in use at exit: 20,084,991 bytes in 3,922 blocks.
==16057== malloc/free: 44,360 allocs, 40,439 frees, 56,168,415 bytes allocated.
==16057== For counts of detected errors, rerun with: -v
==16057== searching for pointers to 3,922 not-freed blocks.
==16057== checked 13,187,712 bytes.
==16057==
==16057==
==16057== 0 bytes in 61 blocks are definitely lost in loss record 1 of 65
==16057== at 0x4C20C6B: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x6AEEC08: operator new[](unsigned long) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6255840: gllCL::gllclProgramImpl::DecodeLoopConstants(gllCL::Section const&, char const*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6255D73: (within /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6254CE8: gllCL::gllclProgramImpl::clExtractElfBinary() (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6254378: gllCL::gllclProgramImpl::ExtractUsageInfo() (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6252B9C: gllCL::scltogllclUsageInfo(sclProgram*, gllCL::gllclProgramImpl*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6253408: gllCL::clCompile(glclStateHandleTypeRec*, gllclCompileParameters const&, gllShaderLanguageEnum, unsigned long, void const*, int, _sourceStrings*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6252703: mbclCompile(glclStateHandleTypeRec*, gllclCompileParameters const&, gllShaderLanguageEnum, unsigned long, void const*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x652934D: gllMB::SurfaceFill::loadProgram(gslProgramTargetEnum, gslProgramObjectRec*&, gslMemObjectRec*&, int*&, unsigned, char const*, gllclCompileParameters const&) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x65A6F6E: gllMB::SurfaceCopy::buildFragmentProgram(gllMB::SurfaceCopyOperation, unsigned) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x65AA782: gllMB::SurfaceCopy::setupFragmentState(gllMB::SurfaceCopyOperation, unsigned) (in /usr/lib64/dri/fglrx_dri.so)
==16057==
==16057==
==16057== 664 (16 direct, 648 indirect) bytes in 1 blocks are definitely lost in loss record 36 of 65
==16057== at 0x4C20C6B: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x300BA263C2: __FireGLDRIGetVisualConfigPrivates (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA281D7: (within /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA2787A: (within /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA26634: __glXInitialize (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA22FD4: glXChooseVisual (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x402AD3: (within /usr/bin/glxgears)
==16057== by 0x53421F3: (below main) (in /lib64/libc-2.7.so)
==16057==
==16057==
==16057== 1,616 bytes in 32 blocks are possibly lost in loss record 44 of 65
==16057== at 0x4C20C6B: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x6AEEC08: operator new[](unsigned long) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A011A3: gsl::FetchProgramObject::SWPathStuff::construct(gsl::gsInput2ResourceTable const&) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A01686: gsl::FetchProgramObject::pack(gsl::gsCtx*, AtiElfBinary, void*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69FB587: gslProgramString(gslCommandStreamRec*, gslProgramObjectRec*, gslProgramTargetEnum, gslProgramFormatEnum, unsigned, void const*, void*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A075B5: gsomProgramStringARB(gslCommandStreamRec*, gslProgramObjectRec*, gslProgramTargetEnum, gslProgramFormatEnum, unsigned, void const*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6529425: gllMB::SurfaceFill::loadFetchProgram(gslProgramObjectRec*&, unsigned, sclFetchShaderInstr*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6529A47: gllMB::SurfaceLoad::init(glmbStateHandleTypeRec*, gslRenderStateRec*, glclStateHandleTypeRec*, gllMB::SurfaceCopy*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6512F52: cxmbInitCtxState(glAdaptorHandleTypeRec*, glmbStateHandleTypeRec*, glshStateHandleTypeRec*, glclStateHandleTypeRec*, glcxStateHandleTypeRec*, glepStateHandleTypeRec*, gldbStateHandleTypeRec*, glsvStateHandleTypeRec*, gsCtxInfoRec*, _bool32, unsigned) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6231C09: glcxCreateContext(glAdaptorHandleTypeRec*, cmNativeContextHandleRec*, glConfigInfoRec const*, _bool32) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x669F195: wsiContext::wsiContext(glAdaptorHandleTypeRec*, cmNativeContextHandleRec*, RefPtr<wsiConfig>) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6695DAF: wsiDisplay::createContext(cmNativeContextHandleRec*, wsiConfigHandle) (in /usr/lib64/dri/fglrx_dri.so)
==16057==
==16057==
==16057== 1,728 (216 direct, 1,512 indirect) bytes in 1 blocks are definitely lost in loss record 45 of 65
==16057== at 0x4C20C6B: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x300BA217F9: _gl_context_modes_create (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x6AF12E8: __driCreateNewScreen_20050727 (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x300BA2828F: (within /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA2787A: (within /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA26634: __glXInitialize (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x300BA22FD4: glXChooseVisual (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x402AD3: (within /usr/bin/glxgears)
==16057== by 0x53421F3: (below main) (in /lib64/libc-2.7.so)
==16057==
==16057==
==16057== 987,648 bytes in 1,286 blocks are definitely lost in loss record 63 of 65
==16057== at 0x4C1FD7C: calloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==16057== by 0x300BA48227: XF86DRIGetDeviceInfo (in /usr/lib64/opengl/ati/lib/libGL.so.1.2)
==16057== by 0x6AF2257: DRIGetScreenSize (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6AF5BA8: driGetScreenSize(cmNativeDisplayHandleRec*, unsigned*, unsigned*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6B5061F: lnxioGetWindowInfo(IODrvConnHandleTypeRec*, cmWindowInfoRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A117DD: ioGetWindowInfo(void*, cmWindowInfoRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x69D0B51: gslGetWindowInfo(gslCommandStreamRec*, cmWindowInfoRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x6A06CC8: gscxGetWindowInfo(gslCommandStreamRec*, cmWindowInfoRec*) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x66C39A0: wpWindowSystem::resizeIfNeeded(bool) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x66B2486: cxwpClear(glwpStateHandleTypeRec*, _bool32) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x621E5DB: epcxClear(glcxStateHandleTypeRec*, unsigned) (in /usr/lib64/dri/fglrx_dri.so)
==16057== by 0x63F1F81: gllEP::ep_tls_Clear(unsigned) (in /usr/lib64/dri/fglrx_dri.so)
==16057==
==16057== LEAK SUMMARY:
==16057== definitely lost: 987,880 bytes in 1,349 blocks.
==16057== indirectly lost: 2,160 bytes in 8 blocks.
==16057== possibly lost: 1,616 bytes in 32 blocks.
==16057== still reachable: 19,093,335 bytes in 2,533 blocks.
==16057== suppressed: 0 bytes in 0 blocks.
==16057== Reachable blocks (those to which a pointer was found) are not shown.
==16057== To see them, rerun with: --leak-check=full --show-reachable=yes