Comment 0 for bug 1211982

Revision history for this message
Brandon Schaefer (brandontschaefer) wrote : Memory leaks while running mir

Here are 2 bugs that picked up in valgrind while running egl examples, which I've made sure under 1 examples that eglDestorySurface is being called on the same pointer that was created:

One example:
==13390== 24 bytes in 1 blocks are definitely lost in loss record 13 of 39
==13390== at 0x402B965: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==13390== by 0x43FA338: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43EA878: eglCreateWindowSurface (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x40F5BF0: Mir_CreateWindow (SDL_mirwindow.c:91)
==13390== by 0x40D64FD: SDL_CreateWindow (SDL_video.c:1252)
==13390== by 0x4074B12: SDL_CreateWindowAndRenderer (SDL_render.c:190)
==13390== by 0x4190904: (below main) (libc-start.c:260)
==13390==
==13390== 3,172 (76 direct, 3,096 indirect) bytes in 1 blocks are definitely lost in loss record 38 of 39
==13390== at 0x40299D8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==13390== by 0x7674F91: ???
==13390== by 0x75DD541: ???
==13390== by 0x76757C3: ???
==13390== by 0x43F57BD: dri2_create_screen (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43FA50D: dri2_initialize_mir (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43F4F97: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43EEC6C: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43EF0A3: _eglMatchDriver (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x43E9C67: eglInitialize (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13390== by 0x400E5DB: _dl_fixup (dl-runtime.c:113)
==13390==

Second example:
==13297== 24 bytes in 1 blocks are definitely lost in loss record 14 of 34
==13297== at 0x402B965: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==13297== by 0x40E7338: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40D7878: eglCreateWindowSurface (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x8049D69: mir_eglapp_init (in /usr/bin/mir_demo_client_eglplasma)
==13297== by 0x804927F: main (in /usr/bin/mir_demo_client_eglplasma)
==13297==
==13297== 3,172 (76 direct, 3,096 indirect) bytes in 1 blocks are definitely lost in loss record 33 of 34
==13297== at 0x40299D8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==13297== by 0x7D81F91: ???
==13297== by 0x7CEA541: ???
==13297== by 0x7D827C3: ???
==13297== by 0x40E27BD: dri2_create_screen (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40E750D: dri2_initialize_mir (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40E1F97: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40DBC6C: ??? (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40DC0A3: _eglMatchDriver (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x40D6C67: eglInitialize (in /usr/lib/i386-linux-gnu/mesa-egl/libEGL.so.1.0.0)
==13297== by 0x8049CEF: mir_eglapp_init (in /usr/bin/mir_demo_client_eglplasma)
==13297== by 0x804927F: main (in /usr/bin/mir_demo_client_eglplasma)

They seem like memory leaks in libEGL but it is running things in mir...

To reproduce:
valgrind --tool=memcheck --num-callers=50 --leak-check=full --track-origins=yes mir_demo_client_eglplasma 2>&1 | tee mir-val.log

There appears to be 2 different leaks, but they are consistent. Even when things are cleaned up through eglTerminate and eglDestorySurface.