Hi,
Thank you for your feedback,
Could you test this again with current SVN? A number of leaks following
AG_Destroy() have been addressed since version 1.3.4.
You don't need anything other than AG_Destroy() at the end of your program.
I've attached the valgrind suppression file I'm using on my Linux/amd64
workstation.
On Sun, Apr 04, 2010 at 05:03:49AM -0500, Avery Fay wrote:
> Hello,
>
> I usually like to start projects with clean valgrind output so that I can
> easily detect if I've inadvertently leaked memory. The problem I'm having is
> that even the simplest agar app is causing a lot of leak warnings from
> valgrind. For example, I've attached the valgrind output from running the
> demos/minimal program.
>
> Some of it probably isn't real like the X11 stuff, but I'm not sure about
> the rest. Are these real leaks? Do I need to add something more than
> AG_Destroy at the end of the program?
>
> Thanks,
> Avery Fay
> _______________________________________________
> Agar mailing list
> [email protected]
> http://libagar.org/lists.html
{
SDL_SYS_CreateThread (pthread init)
Memcheck:Param
write(buf)
fun:__pthread_initialize_manager
fun:pthread_create@@GLIBC_2.2.5
fun:SDL_SYS_CreateThread
}
{
SDL_SYS_CreateThread (pthread_create)
Memcheck:Param
write(buf)
fun:pthread_create@@GLIBC_2.2.5
fun:SDL_SYS_CreateThread
}
{
Glibc clone use (child_tidptr)
Memcheck:Param
clone(child_tidptr)
fun:clone
}
{
SDL_SetVideoMode X11 write (write)
Memcheck:Param
write(buf)
fun:write
obj:/usr/lib64/libX11.so.6.2.0
obj:/usr/lib64/libX11.so.6.2.0
fun:_XReply
fun:XGetWindowProperty
fun:XGetWMHints
obj:/usr/lib64/libSDL-1.2.so.0.7.1
obj:/usr/lib64/libSDL-1.2.so.0.7.1
fun:SDL_SetVideoMode
fun:AG_ViewInit
fun:AG_InitVideo
fun:main
}
{
Linux 1
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
}
{
XCreateBitmap
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libdl-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libdl-2.6.1.so
fun:dlopen
obj:/usr/lib64/libX11.so.6.2.0
}
{
__libc_dlopen_mode 1
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
fun:__libc_dlopen_mode
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
}
{
__libc_dlopen_mode 2
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
fun:__libc_dlopen_mode
obj:/lib64/libc-2.6.1.so
}
{
__libc_dlsym
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
fun:__libc_dlsym
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
}
{
__libc_dlopen_mode 3
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
fun:__libc_dlopen_mode
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
}
{
__libc_dlopen_mode 4
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libc-2.6.1.so
fun:__libc_dlopen_mode
obj:/lib64/libc-2.6.1.so
obj:/lib64/libc-2.6.1.so
}
{
agar dlopen()
Memcheck:Addr8
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libdl-2.6.1.so
obj:/lib64/ld-2.6.1.so
obj:/lib64/libdl-2.6.1.so
fun:dlopen
fun:LoadDSO_DLOPEN
}
{
SetKeyboardState
Memcheck:Cond
fun:X11_SetKeyboardState
fun:X11_PumpEvents
fun:SDL_PumpEvents
fun:SDL_PollEvent
fun:AG_EventLoop_FixedFPS
fun:main
}
{
junk 1234
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
}
{
getpwuid_r
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
fun:__libc_dlopen_mode
fun:__nss_lookup_function
obj:/lib64/libc-2.9.so
fun:getpwuid_r
fun:getpwuid
}
{
getpwuid_r 2
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
fun:__libc_dlopen_mode
fun:__nss_lookup_function
obj:/lib64/libc-2.9.so
fun:getpwuid_r
}
{
nss_lookup_function
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
fun:__libc_dlopen_mode
fun:__nss_lookup_function
}
{
junk 2
Memcheck:Addr8
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/ld-2.9.so
}
{
nvidia dlopen
Memcheck:Addr8
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
fun:dlopen
obj:/usr/lib64/opengl/nvidia/lib/libGL.so.180.60
}
{
Agar UpdateKeyboard
Memcheck:Cond
fun:UpdateKeyboard
fun:ProcessEvents
fun:GenericEventLoop
fun:main
}
{
nvidia XSend
Memcheck:Param
writev(vector[...])
obj:/lib64/libc-2.9.so
obj:/usr/lib64/libxcb.so.1.1.0
obj:/usr/lib64/libxcb.so.1.1.0
fun:xcb_writev
fun:_XSend
obj:/usr/lib64/opengl/nvidia/lib/libGL.so.180.60
obj:*
obj:*
}
{
nvidia dlopen
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
fun:dlopen
obj:/usr/lib64/opengl/nvidia/lib/libGL.so.180.60
obj:/usr/lib64/libSDL-1.2.so.0.11.2
obj:/usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.180.60
fun:SDL_LoadObject
}
{
<insert a suppression name here>
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/libdl-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
fun:dlsym
obj:/usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.180.60
fun:SDL_LoadFunction
obj:/usr/lib64/libSDL-1.2.so.0.11.2
}
{
SDL_LoadFunction
Memcheck:Cond
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/libdl-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
fun:dlsym
obj:/usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.180.60
fun:SDL_LoadFunction
obj:/usr/lib64/libSDL-1.2.so.0.11.2
obj:/usr/lib64/libSDL-1.2.so.0.11.2
obj:/usr/lib64/libSDL-1.2.so.0.11.2
}
{
SDL_LoadFunction 2
Memcheck:Addr8
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libc-2.9.so
obj:/lib64/libdl-2.9.so
obj:/lib64/ld-2.9.so
obj:/lib64/libdl-2.9.so
fun:dlsym
obj:/usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.180.60
fun:SDL_LoadFunction
obj:/usr/lib64/libSDL-1.2.so.0.11.2
}
{
foo 1
Memcheck:Param
writev(vector[...])
obj:/lib64/libc-2.9.so
obj:/usr/lib64/libxcb.so.1.1.0
obj:/usr/lib64/libxcb.so.1.1.0
fun:xcb_writev
fun:_XSend
fun:_XReply
fun:XSync
obj:/usr/lib64/libSDL-1.2.so.0.11.2
obj:/usr/lib64/libSDL-1.2.so.0.11.2
fun:SDL_SetVideoMode
fun:OpenVideo
fun:AG_InitGraphics
}
_______________________________________________
Agar mailing list
[email protected]
http://libagar.org/lists.html