<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - xcb_wait_for_reply makes valgrind report memory leaks on Mesa driver"
href="https://bugs.freedesktop.org/show_bug.cgi?id=105237#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - xcb_wait_for_reply makes valgrind report memory leaks on Mesa driver"
href="https://bugs.freedesktop.org/show_bug.cgi?id=105237">bug 105237</a>
from <span class="vcard"><a class="email" href="mailto:max.filippenko@gmail.com" title="Maxim Filippenko <max.filippenko@gmail.com>"> <span class="fn">Maxim Filippenko</span></a>
</span></b>
<pre>I have a similar problem in my project. I build last xcb (version 1.12) and
mesa (version 17.2.0-devel) with -ggdb and -fsanitize=address (use gcc
sanitizer).
Indirect leak of 689436 byte(s) in 19151 object(s) allocated from:
#0 0x7f9af0728602 in malloc
(/usr/lib/x86_64-linux-gnu/libasan.so.2+0x98602)
#1 0x7f9aec122424 in read_packet
/home/filippenko/Soft/libxcb-1.12/src/xcb_in.c:259
#2 0x7f9aec12613a in _xcb_in_read
/home/filippenko/Soft/libxcb-1.12/src/xcb_in.c:1012
#3 0x7f9aec11e560 in _xcb_conn_wait
/home/filippenko/Soft/libxcb-1.12/src/xcb_conn.c:515
#4 0x7f9aec1238bd in wait_for_reply
/home/filippenko/Soft/libxcb-1.12/src/xcb_in.c:516
#5 0x7f9aec123b0a in xcb_wait_for_reply
/home/filippenko/Soft/libxcb-1.12/src/xcb_in.c:546
#6 0x7f9ae9faf64e in xcb_dri2_swap_buffers_reply
/home/filippenko/Soft/libxcb-1.12/src/dri2.c:893
#7 0x7f9aeec7cbcb in dri2_x11_swap_buffers_msc (lib/libEGL.so.1+0x1bbcb)
#8 0x7f9aeec7ccce in dri2_x11_swap_buffers (lib/libEGL.so.1+0x1bcce)
#9 0x7f9aeec77e89 in dri2_swap_buffers (lib/libEGL.so.1+0x16e89)
#10 0x7f9aeec6b202 in eglSwapBuffers (lib/libEGL.so.1+0xa202)
Inside method xcb_wait_for_reply events are added to the linked list, but
nobody reads this list.
I tried to add a cleanup of this list:
=============================================
diff --git a/src/egl/drivers/dri2/platform_x11.c
b/src/egl/drivers/dri2/platform_x11.c
index b01f739..1d1271d 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -869,6 +869,12 @@ dri2_x11_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay
*disp, _EGLSurface *draw,
reply = xcb_dri2_swap_buffers_reply(dri2_dpy->conn, cookie, NULL);
+ xcb_generic_event_t * event = xcb_poll_for_event(dri2_dpy->conn);
+ while (event) {
+ free(event);
+ event = xcb_poll_for_event(dri2_dpy->conn);
+ }
+
if (reply) {
swap_count = (((int64_t)reply->swap_hi) << 32) | reply->swap_lo;
free(reply);
===============================================
After that the problem (memory leak) is not observed yet.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>